Я пытаюсь модифицировать некоторые тесты, используя Test::More
для устаревшего кода, и я столкнулся с некоторой проблемой. Кажется, я не могу установить %ENV
в тестовом модуле. Вызываемая функция определенно использует эту переменную, поэтому %ENV
, похоже, не переносится на тестовый объект.Как я могу издеваться над% ENV в тестах Perl?
#!/usr/bin/perl
use strict; use warnings;
use Test::More qw(no_plan);
BEGIN {
$ENV{HTTP_WWW_AUTHENTICATE} =
'WWW-Authenticate: MyType realm="MyRealm",userid="123",password="abc"';
use_ok('Util');
}
$ENV{HTTP_WWW_AUTHENTICATE} =
'WWW-Authenticate: MyType realm="MyRealm",userid="123",password="abc"';
printf qq{get_authentication_info = "%s"\n}, get_authentication_info();
ok(get_authentication_info(), 'Get authentication info');
я получаю ...
perl t\Util.t ok 1 - use Util; Use of uninitialized value in concatenation (.) or string at t\Util.t line 14. get_authentication_info = ""
Как и со всеми вещами Perl, я уверен, что кто-то сделал это раньше.
UPDATE: Спасибо всем за вашу помощь
Проблема была между стулом клавиатуры & ... Мой тест данных был просто неправильно Это должно было быть
$ENV{HTTP_WWW_AUTHENTICATE} =
'MyType realm="MyRealm",userid="123",password="abc"';
OK комментариев нет в исполняемом файле ... они просто показывают, где я пытался установить% ENV БЕЗ комментариев. – telesphore4
Почему вы прокомментировали строки, которые задают переменную env? – Thushan
Вы можете делать другие вещи, например добавить комментарий после строки, чтобы указать на него, а не комментировать код проблемы. –