我写了一个测试
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一起使用,并且名称将更适合于
//当
?
编辑:
我要测试的代码是
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();
}
});
}