小编rsa*_*rsa的帖子

使用Test :: More测试Perl模块(中级Perl,第14章)

这是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)

testing perl module

10
推荐指数
1
解决办法
611
查看次数

标签 统计

module ×1

perl ×1

testing ×1