测试边界:检查函数是否调用另一个函数或检查另一个函数的结果

时间:2017-12-14 21:39:43

标签: unit-testing tdd

我正在为函数编写单元测试。根据输入,该功能将调用其他一些功能。

我可以通过

验证预期的行为
  1. 模拟被调用的函数并检查它们是否被预期参数调用(或未被调用)
  2. 或检查这些其他功能的结果
  3. 我更喜欢#1,因为我相信这些其他功能的结果应该在他们自己的相应测试中进行测试。但我的同事更喜欢#2。

    有人能帮我解决这个原则吗?

1 个答案:

答案 0 :(得分:0)

如果结果本身难以测试,则选项1不是不可能的。但选项2更可取。为什么呢?

因为选项1测试实现细节。这反过来又锁定了这些细节。

选项2不了解实施情况。这有助于改变设计。

如果您能够测试结果,则无需为每个单元编写测试。如果我们使用TDD扩展解决方案,那么生产代码可能会从更大的功能开始。每次重构都将得到测试的支持。也许我们会提取其他功能。也许我们会提取整个课程。谁能说?有了TDD,我们可以推迟这些决定。我们甚至可以改变主意。