我正在为函数编写单元测试。根据输入,该功能将调用其他一些功能。
我可以通过验证预期的行为
我更喜欢#1,因为我相信这些其他功能的结果应该在他们自己的相应测试中进行测试。但我的同事更喜欢#2。
有人可以帮我管理这个原则吗?
如果结果本身难以测试,那么选项1并不是不可能的。但选项2更可取。为什么?
因为选项1测试实现细节。这反过来又锁定了这些细节。
备选方案2不了解实施情况。这支持改变设计。
如果您能够测试结果,则无需为每个单元编写测试。如果我们使用TDD扩展解决方案,那么生产代码可能会从更大的功能开始。每次重构都将得到测试的支持。也许我们会提取其他功能。也许我们会提取整个课程。谁能说?有了TDD,我们可以推迟这些决定。我们甚至可以改变主意。