Я написал тест, который использует BBDMockito
и Argument Captor
. Аргумент Captor используется только для захвата обратного вызова и вызова onDataNotAvailable()
, , но не для проверки .
@Test
public void loadNoItemFromRepository_showsMissingItem() {
//given
itemDetailPresenter = new ItemDetailPresenter(UNCHECKED_ITEM.getId(), itemsRepository, itemDetailView);
given(itemDetailView.isActive()).willReturn(true);
//when
itemDetailPresenter.load();
verify(itemsRepository).getItem(eq(UNCHECKED_ITEM.getId()), getItemCallbackArgumentCaptor.capture());
getItemCallbackArgumentCaptor.getValue().onDataNotAvailable();
//then
then(itemDetailView).should().showMissingItem();
}
Verify
, помещенный в раздел //when
, вводит в заблуждение, поскольку название предполагает, что его следует поместить в раздел проверки (//then
). Есть ли псевдоним для verify()
, чтобы я мог использовать его с аргументом captor, и имя будет более подходящим для //when
?
Отредактировано:
Код, который я хочу проверить, это если itemDetailView.showMissingItem()
был вызван.
public void load() {
(...)
itemsRepository.getItem(itemId, new ItemsDataSource.GetItemCallback() {
@Override
public void onItemLoaded(Item item) {
(...)
if (nonNull(item))
showItem(item);
else
itemDetailView.showMissingItem();
}
@Override
public void onDataNotAvailable() {
(...)
itemDetailView.showMissingItem();
}
});
}