2015-10-14 46 views
2

如何在android中測試事件總線。我正在使用奧托。我曾嘗試過:Square Otto活動巴士 - 如何測試帖子並訂閱junit和roboelectric

@Mock 
Bus bus; 

delcared在我的測試中。但現在我想要做的是發佈一個事件,然後檢查是否執行了該操作。事件是這樣創建的:

new CoolEvent(true,true);但我不知道命令來檢查訂戶代碼是否執行。我可以使用Captor嗎?這是如何完成的?

回答

4

我已經找到了如何測試它。有兩件事你可以做。一種是使用和的Mockito這樣做:

ArgumentCaptor<OTTOEventClass> captor = ArgumentCaptor 
        .forClass(OTTOEventClass.class); 

然後,因爲你希望有一個公交車在你的測試,你可以驗證後到總線是與OTTOEventClass對象進行。 這樣的:

verify(bus).post(captor.capture()); 

你也可以驗證某些標誌在OTTOEventClass設置是這樣的:

assertThat(captor.getValue().isFlagSet(), equalTo(true)); 

你可以做其他的事情只是驗證總線職位被稱爲某種類型像這樣:

verify(bus).post(isA(OTTOEventClass.class)); 

以上只是驗證bus.post(new OTTOEventClass())是在測試期間的地方調用,並且被張貼的事件類型OTTOEventClass。

我不測試奧托訂戶,因爲我的測試是關於測試我的功能不是奧托。讓奧托被廣場測試,我不測試框架我測試我的代碼&調用和我的業務邏輯。