想我下面的类:我应该在单元测试中检查协作者的回报值吗?
class A {
private B b;
private int milkQuantity;
A(B b) {
this.b = b;
}
public getCoffee() {
milkQuantity = b.getMilk(1);
return secretRecipe();
}
...
}
所以,虽然单元测试应该嘲笑我类B
,检查是否getMilk()
方法被调用或者我应该检查它是否返回正确的奶量(即1杯)?对于后一种情况,我需要在我的单元测试中设置类B
。
根据我们的说法,我们需要检查类B
在自己的单元测试中的行为,只有在调用了正确的方法时才应该关注类A
。
更新1
使我的观点更明确:
上调用a.getCoffee()
我应该测试:
assertThat(a.milkQuantity).isEqualTo(1);
OR
verify(b).getMilk();
东西,如果你正在测试'A',你只需要检查'A'是做什么它应该。如果你正在测试'B',你需要检查'B'正在做它应该做的事情。 – khelwood