这是Stack Overflow的第一个问题.如果我打破一些规则,请提前道歉.
我一直在阅读Intermediate Perl的第14章,第2版,其中讨论了测试Perl模块和使用Test :: More的功能.我指的是在本书的"添加我们的第一次测试"一节中直接发布的代码.
对于某些背景,在本章中,将Animal在具有相同名称的模块中创建示例类.这个类有一个简单的speak方法,如下所示:
sub speak {
my $class = shift;
print "a $class goes ", $class->sound, "!\n";
}
Run Code Online (Sandbox Code Playgroud)
该sound方法是为特定Animal返回的简单字符串,因此,例如,Horse的sound方法将是简单的sub sound { "neigh" },它的speak方法应输出以下内容:
A Horse goes neigh!
Run Code Online (Sandbox Code Playgroud)
我遇到的问题如下:在我在./Animal/t/Animal.t创建的测试代码中,我被指示使用裸块并Test::More::is测试该speak方法是否正常工作.代码在测试文件中如下所示:
[test code snip]
{
package Foofle;
use parent qw(Animal);
sub sound { 'foof' }
is( Foofle->speak,
"A Foofle goes foof!\n",
"An Animal subclass does the right thing"
);
}
Run Code Online (Sandbox Code Playgroud)
测试失败.我运行了所有Build命令,但是在运行"Build test"时,我对Animal测试失败了:
Undefined …Run Code Online (Sandbox Code Playgroud)