Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何测试';使用'*失败*?_Perl_Unit Testing_Exception - Fatal编程技术网

Perl 如何测试';使用'*失败*?

Perl 如何测试';使用'*失败*?,perl,unit-testing,exception,Perl,Unit Testing,Exception,提供常用的use_oktest以测试模块是否正确加载。但是如何测试模块是否无法加载?为类似故障提供模具_ok和同类产品,但不在使用时提供 当模块需要特定参数或特定环境才能正确加载时,这非常有用,我想测试这些条件。例如,我的'Foo'模块可能需要一个配置参数,否则将无法加载: use Foo 'eat my hat'; # This should work use Foo; # This should die 我可以使用test::More轻松测试第一个案例: BEGIN { use_ok('

提供常用的
use_ok
test以测试模块是否正确加载。但是如何测试模块是否无法加载?为类似故障提供
模具_ok
和同类产品,但不在使用时提供

当模块需要特定参数或特定环境才能正确加载时,这非常有用,我想测试这些条件。例如,我的'Foo'模块可能需要一个配置参数,否则将无法加载:

use Foo 'eat my hat';  # This should work
use Foo; # This should die
我可以使用test::More轻松测试第一个案例:

BEGIN { use_ok('Foo','eat my hat') }
但是我怎样才能测试另一个呢

BEGIN { use_not_ok('Foo') }  # use_not_ok doesn't exist

所以

但我还是同意

BEGIN { ok(!eval('use Foo; 1')); }

我不确定那是个好主意。你确定你不想
使用Foo
使用Foo()相同?在我的例子中,我将一个文件名作为参数传递给模块,如果没有指定文件名,它应该消失,或者如果文件不存在,它应该消失,或者即使文件包含无效内容,它也应该消失。是的,我不确定这是一个好主意<代码>使用Foo()只需加载您的模块。为什么
不使用Foo
?@ikegami:也许我不明白你在说什么,但“使用Foo()”在我的情况下也会失败……如果这是真的,那么
使用Foo“吃我的帽子”也是一样$@
中。你想怎么做就怎么做。
BEGIN { require Foo; import Foo; }
BEGIN { ok(!eval { require Foo; import Foo; 1 }); }
BEGIN { ok(!eval('use Foo; 1')); }