我如何测试只调用系统命令的ruby方法?

时间:2016-03-02 19:57:21

标签: ruby unit-testing rspec

看了之后:

How do I stub/mock a call to the command line with rspec?

提供的答案是:

formatter:'showlink'

我的问题是:这实际上是如何测试的?

通过创建一个方法来说"在系统上调用ls命令",然后写一个测试说"我的方法应该在系统上调用ls命令", 如何提供任何好处

如果方法要改变,我也必须改变测试,但我不确定我是否看到了额外的好处。

1 个答案:

答案 0 :(得分:0)

您所描述的方法被称为“模拟者”或“伦敦”单元测试学校。它的好处包括

  • 构建此类测试的行为激励设计在依赖性或条件逻辑方面不过分复杂的单元
  • 这些测试执行得非常快,这对大型系统来说非常重要
  • 可以合理地构建此类测试,以便为被测单元提供最大覆盖率
  • 这样的测试会为您的代码提供各种各样的“老虎钳”,这样无意的更改将导致测试失败

当然,这些测试有其局限性,这就是为什么它们经常与系统级测试配对,测试一起运行的单元集合是否实现了更高阶的结果。