【问题标题】:How do I do Perl machine or platform dependent TDD?如何进行 Perl 机器或平台相关的 TDD?
【发布时间】:2009-01-22 20:41:34
【问题描述】:

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

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

【问题讨论】:

    标签: perl unit-testing tdd multiplatform


    【解决方案1】:

    要跟进 Jason 的 mock objects 建议,您应该查看文章 "Interfacing with hard-to-test third party controls" by Misko Hevery。它直接解决了测试第三方组件的问题。

    【讨论】:

      【解决方案2】:

      通常您使用mock objects 来“伪造”这些系统调用的结果。

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

      【讨论】:

      • 无论出于什么奇怪的原因,当我发布此内容时,我认为我必须模拟 Net::Ifconfig::Wrapper 调用的内容,而不是 Net::Ifconfig::Wrapper 本身。我只能以暂时的精神错乱为辩护......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      相关资源
      最近更新 更多