5

如何测试依赖于机器或平台的功能或模块?例如,看起来/依赖于$^O或像Net::Ifconfig::Wrapper这样的模块的东西?我不需要测试 Net::Ifconfig::Wrapper 是否返回正确的值,但我确实需要测试我是否使用这些值做正确的事情。

谢谢!

编辑:测试$^O结果比我想象的要容易:

{
    # <~> $ perl -e 'print $^O'
    # linux

    local $^O = 'linux';
    $rc = GetOSType();
    is($rc, $OS_LINUX, 'OS Check - linux');
}

出于某种原因,我认为它是一个只读变量。

4

2 回答 2

5

要跟进 Jason 的模拟对象建议,您应该查看Misko Hevery 的文章“与难以测试的第三方控件交互”。它直接解决了测试第三方组件的问题。

于 2009-01-22T21:07:53.613 回答
3

通常,您使用模拟对象来“伪造”这些系统调用的结果。

在测试期间,使用模拟对象并让它们在不同平台上返回您期望的各种结果,测试您的代码在这些情况下是否正确反应。

于 2009-01-22T21:00:47.577 回答