我有數倍BarService
相關重載update
方法就可以了,就像這樣:如何使用Mockito來驗證是否有一組重載方法被調用?
BarService#update(Bar bar);
BarService#update(Bar bar, boolean checkX);
BarService#update(Bar bar, boolean checkX, boolean checkY);
我想,以確保他們的沒有被稱爲在一個特定的測試。目前,我這樣做:
@Test
public test doFoo_shouldNotUpdateBar() {
setUpTest();
doFoo();
verify(barService, never()).update(any(Bar.class)));
verify(barService, never()).update(any(Bar.class), anyBoolean()));
verify(barService, never()).update(any(Bar.class), anyBoolean(), anyBoolean()));
...
}
我可以通過所有verify
呼叫移動到一個輔助方法來檢查所有重載版本打掃一下了一下:
@Test
public test doFoo_shouldNotUpdateBar() {
setUpTest();
doFoo();
verifyBarServiceNeverUpdates(any(Bar.class));
}
但有一個如何讓Mockito在這裏做我想做的事?基本上,要檢查重載的方法是否被調用,而不考慮其參數?
這是一個可行的選擇,但不幸的是,它污染了我的測試與一堆我不想要的東西。讓我們說'barService'在調用'update'之前做'X'和'Y'。現在我必須在調用'verifyNoMoreInteractions(barService)'之前明確'驗證(barService).doX'和'驗證(barService).doY'。但在這個測試中,我實際上並不知道或關心'doX'和'doY',所以他們只是分心。 – Sasgorilla