我如何进行 Perl 机器或平台相关的 TDD?
如何测试依赖于机器或平台的功能或模块? 例如,查看/依赖于 $^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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要跟进 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.
通常,您使用模拟对象来“伪造”这些系统调用的结果。
在测试过程中,使用模拟对象并让它们返回您在不同平台上期望的各种结果,测试您的代码在这些情况下是否能正确反应。
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.