我正在學習GwtMockito,但無法在我的一個測試中獲得一致的verify()方法。Mockito驗證方法沒有給出一致的結果
我想測試正確的GwtEvents正在被我的應用程序解僱。所以,我嘲笑事件總線像這樣在我的@Before方法:
eventBus = mock(HandlerManager.class);
該測試通過預期:
// Passes as expected
verify(eventBus).fireEvent(any(ErrorOccurredEvent.class));
我想迫使測試只是不知道它是運行正確。所以我改變了它,它仍然通過:
// Expected this to fail, but it passes
verify(eventBus).fireEvent(any(ErrorOccurredEvent.class));
verifyZeroInteractions(eventBus).fireEvent(any(ErrorOccurredEvent.class));
這似乎與我矛盾。所以我刪除了第一個測試:
// Fails as expected
verifyZeroInteractions(eventBus).fireEvent(any(ErrorOccurredEvent.class));
最後,我添加了一個不相關的事件應該導致失敗
// Expected to fail, but passes
verify(eventBus).fireEvent(any(ErrorOccurredEvent.class));
verify(eventBus).fireEvent(any(ModelCreatedEvent.class)); // This event is not used at all by the class that I'm testing. It's not possible for it to be fired.
我沒有找到,說明發生了什麼事情的任何文件。 ErrorOccurredEvent和ModelCreatedEvent都擴展了GwtEvent,並且已經在手動測試中驗證過。我是否錯誤地測試了我的EventBus?如果是這樣,那麼有什麼更好的辦法呢?
更新
我已經做了一些額外的實驗。這似乎是我與Mockito匹配的問題。當我的測試失敗時,異常報告的方法簽名爲eventBus.fireEvent(<any>)
,所以它似乎沒有考慮到我傳入任何方法的不同類。不知道該怎麼做,但包括它在這裏爲其他人研究這個問題。