У меня есть некоторые проблемы, связанные с реальной реализацией SimpleEventBus EventBus: У меня есть активность, которая также является обработчиком определенного события. Это событие запускается службой.mocking GWT EventBus с mockito
Код:
@Mock private AssetCellList view;
@Mock private AcceptsOneWidget panel;
@Mock private SelectionModel<Asset> selectionModel;
@Mock private HasData<Asset> cellList;
@Mock private AssetService service;
@Mock private Asset asset;
@Mock private List<Asset> list;
@Mock private AssetListDTOClientImpl assetDTO;
@Mock private AssetEvent event;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void test(){
/*Some stubbing*/
when(view.getSelectionModel()).thenReturn(selectionModel);
when(view.getList()).thenReturn(cellList);
when(assetDTO.getAssetList()).thenReturn(list);
when(assetDTO.getAssetList().get(anyInt())).thenReturn(asset);
when(event.getAssetDTO()).thenReturn(assetDTO);
/*Creatin the Real EventBus*/
EventBus eventBus = new SimpleEventBus();
/*Creating the activity */
AssetListActivity activity = new AssetListActivity(eventBus,
view,
service);
/*Spying the eventBus*/
EventBus eventBusSpy = spy(eventBus);
/*Spying the activity*/
AssetListActivity activitySpy = spy(activity);
/*Starting the activity*/
activity.start(panel);
/*verifying the service call -> OK */
verify(service, times(1)).getAssets(anyInt());
/*Simulating the service which eventually fires an event*/
eventBus.fireEvent(event);
/*verifying that the eventBus really fires the event --> NO OK*/
verify(eventBusSpy, times(1)).addHandler(eq(AssetEvent.TYPE), isA(AssetEventHandler.class));
/*later verifiction*/
verify(activitySpy).onAssetsReceived(event);
}
Трассировка ошибки в проверке й eventBusSpy и говорит:
Wanted but not invoked:
simpleEventBus.addHandler(
Event type,
isA(cat.ccma.testproject.client.events.AssetEventHandler)
);
-> at cat.ccma.testproject.client.AssetListTest.test(AssetListTest.java:87)
Actually, there were zero interactions with this mock.
Спасибо.
Thankyou Thomas. Как вы указали, я не пропустил шпионскую версию автобуса. Я также взял преимущество CountingEventBus. Как насчет последующей проверки. Могу ли я играть с этим EventBus (пожар и событие) в jre или мне нужно использовать GwtTest? –
Eveything в «общих» подпакетах может использоваться как в «чистой Java», так и в «GWT Java». Это включает в себя SimpleEventBus и CountingEventBus. –
ОК, может быть, мне нужно больше узнать о выполнении тестов для асинхронных действий, таких как стрельба и событие, потому что я не могу получить его от моей активности (не могу пройти более позднюю проверку) –