[英]Mocking dependency that has setListener(…)
我正在測試的課程有一些依賴關系。 所有這些都提供setListener()
作為從其非阻塞操作接收通知的一種方式。
我實現了一種阻塞方法,該方法匯總了所有非阻塞操作的結果。 這意味着我必須使用此類setListener()
方法注冊偵聽器,然后等待回調。
如何在單元測試中模擬/偽造這些依賴項? 我可以將它們子類化並實現setListener()
並根據需要觸發回調。 但是,可以說其中一些部門是final
堂課。 另外,我認為Mockito可以使用某些功能嗎?
概念代碼(未經測試):
public void blockingMethod() {
CountDownLatch signal = new CountDownLatch(2);
dep1.setListener(new Dep1Listener() {
@Override public onResult(int result) {
signal.countDown();
}
});
dep1.calculateValue1();
dep2.setListener(new Dep2Listener() {
@Override public onResult(int result) {
signal.countDown();
}
});
dep2.calculateValue2();
signal.await();
return combinedResult;
}
我將創建返回固定值的依賴項的具體實現。 我不會繼承現有類,而是創建接口的最小實現。 如果您沒有為依賴項定義接口,請創建它們。
模擬可能會起作用,但測試將更難閱讀。 一旦模擬需要保留一個參數(即您的聽眾)並在以后對其進行處理,就變得很有挑戰性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.