我如何进行 Perl 机器或平台相关的 TDD?

发布于 2024-07-12 11:31:20 字数 501 浏览 8 评论 0原文

如何测试依赖于机器或平台的功能或模块? 例如,查看/依赖于 $^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');
}

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

How do I go about testing a function or module that is machine or platform dependent? For example, something that looks at/depends on $^O or a module like Net::Ifconfig::Wrapper? I don't need to test that Net::Ifconfig::Wrapper is returning the correct values, but I do need to test whether or not I'm doing the right thing with those values.

Thanks!

EDIT: Testing $^O turned out to be easier than I thought:

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

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

For some reason I thought it was a read-only variable.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无所谓啦 2024-07-19 11:31:20

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

To follow up on Jason's mock objects suggestion, you should take a look at the article "Interfacing with hard-to-test third party controls" by Misko Hevery. It directly addresses testing third party components.

森林迷了鹿 2024-07-19 11:31:20

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

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

Generally you use mock objects to "fake up" the results of those system calls.

During testing, use mock objects and have them return the various results you'd expect on different platforms, testing that your code reacts properly in those cases.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文