假设我正在测试我的代码,我已经为5种不同的东西设计了5种功能。函数function_a()返回的函数传递给function_b()...一直到function_e()。见下文。
var1 = function_a()
var2 = function_b(var1)
...
var5 = function_e(var4)
因此,所有这些函数都是相互依赖的,并且依赖于前一个函数的数据。
如何正确测试?单个测试中的五个断言对我来说似乎是一个代码味道,但根据接受的答案here在不同测试之间传递数据(我认为这是必要的)是一点代码味道。
答案 0 :(得分:2)
从测试的角度来看,数据从一个函数传递到下一个函数的事实是无关紧要的。在测试function_a
时,您只是断言它返回预期值(可能是基于某个状态)。因此,您将知道预期的回报值是什么。
单独测试function_b
时,您只需将预期从function_a
返回的值传递给它,并验证它是否返回预期值。你还可以测试当你传递无效值时会发生什么(当用function_a
的实际返回值进行测试时会很困难。
这同样适用于其他功能。您应该分开测试并单独测试。顺序调用的事实对于每个函数都是无关紧要的。他们不知道他们的投入来自哪里
答案 1 :(得分:1)
One assertion per test只是一个推荐(虽然非常合理),并且与您在每个单元测试中一次测试一件事有关。在这里,您有多个功能 - 更大的系统的多个组件"。
理想情况下,您需要在隔离中测试每个函数,并有一组集成测试检查如果您通过完整的链完成它将如何工作功能