#perl #unit-testing #mocking
#perl #модульное тестирование #издевательство
Вопрос:
Я использую Test::MockModule
для тестирования модуля perl. Один из вызовов требует проверки состояния $?
, чтобы получить код ошибки, и программа проверяет его.
Как я могу издеваться над результатом $?
Тестируемый код выглядит так, как показано ниже.
my $result = CCUtil::cleartool($cmd);
if ( $? != 0 ) {
confess "Stream $stream not found( $result) ";
}
API возвращает строку и устанавливает $? для проверки состояния.
Обычные вызовы методов и их возвращаемые значения изменяются, используя что-то вроде приведенного ниже
my $module = Test::MockModule->new('CCUtil');
$mockModule->mock(cleartool => sub {return 'stream not found'});
Вызов метода теперь издевается. Не значение — $?
Ответ №1:
my $module = Test::MockModule->new('CCUtil');
$mockModule->mock(cleartool => sub { $? = 0x0100; return 'stream not found' });