想我下面的類:我應該在單元測試中檢查協作者的回報值嗎?
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