Показать сообщение отдельно
Старый 08.01.2020, 00:14   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Поискал в наших тестах нашел runas и invokestatocmethodil - скорее всего, ничего более удобного нет
жаль.
дело в том, что для runAs должен быть метод со специальной сигнатурой - параметром только контейнер. Кроме того, в контейнер далеко не все получится засунуть.

что тут же делает тестирование в CIL дико трудозатратным.

============
Если хочется попробовать, то можно взять проект https://github.com/mazzy-ax/SysString

задать свойство RunOn=Server для класса StringTest
и добавить два метода:

в класс String:
X++:
public server static container trimIdentIL(container pack)
{
    boolean isCLR = xSession::isCLRSession();

    str s = conPeek(pack, 1);
    SysText     text    = SysText::construct(s);
    str         ret     = SysText::trimIdent(text).getText();

    return [ret];
}
и в класс StringTest:
X++:
void testTrimIdent_IL()
{
    str s = @'
    ABC
        123
    456
    ';

    anytype dummy = new XppILExecutePermission().assert();
    container ret = runClassMethodIL(ClassStr(String), staticMethodStr(String, trimIdentIL), [s]);

    this.assertEquals('ABC\n    123\n456', conPeek(ret, 1));
}
но это как-то сильный перебор для обычных проектов, в которых нет специально подготовленных для CIL методов.
я надеялся, что как-нибудь допилили SysTest-классы
__________________
полезное на axForum, github, vk, coub.