Я пытаюсь создать единичный тест для этой подпрограммы ошибки, показанной ниже. Этот метод принимает имя ошибки и выводит сообщение, значение которого находится в каждой ошибке. Это код, у меня есть:Как создать единичный тест в Perl?
use constant {
# link included as a variable in this example
ERROR_AED => {
errorCode => 561,
message => {"this is an error. "},
tt => { template => 'disabled'},
link => 'www.error-fix.com',
},
};
sub error_post {
my($error) = @_;
printf ($error->{ message });
}
error_post(ERROR_AED);
Это был мой подход, я уверен, что это неправильно, я пытался проверить входные значения, или в более общем случае проверить, что это была ошибка, которая была передана в метод error_post ,
#verifying input values
sub test_error_post {
ok(defined $error, 'Should have an input value'); # check that it's a constant
ok($error->isa(constant) , 'Error should be of type constant');
ok($error->errorCode), 'Should contain key errorCode');
ok($error->message), 'Should contain key message');
ok($error->tt), 'Should contain key tt');
ok($error->wiki_page) 'Should contain key wiki page');
}
Я знаю, что это, вероятно, далеко.
У вас есть отклоненные круглые скобки на последних четырех строках. Отредактируйте его так, чтобы, по крайней мере, у вас есть что-то, что компилируется. – mob
Вам также не хватает полуколонии после 'use constant {...}' и вы забыли цитаты вокруг 'www.error-fix.com'. Пожалуйста, не изобретайте код, который вы фактически не используете, и введите его непосредственно в поле вопроса; создайте [mcve] и скопируйте-вставьте его дословно. (Это просто общий совет, кстати, я вижу, что вы спрашиваете о правильном подходе, а не об ошибках компиляции.) – ThisSuitIsBlackNot
Также, как все настроено в ваших тестах, вы пытаетесь вызвать методы на объект $ error, вместо проверки значений хеш-ключей. Вы даже пытались запустить этот код? – stevieb