这是我的测试方法,如果调用 showLoading()和 loadDataSuccess(响应),它应该会成功:
@RunWith(PowerMockRunner.class)
public class PresenterTest {
@Mock
private ProfileContract.View view;
@Mock
private ProfileContract.Handler handler;
@Test
public void onLoadDataClicked() {
presenter.loadData();
verify(mView, times(1)).showLoading();
verify(mHandler, times(1)).loadDataSuccess();
}
}
更新1 这是我的主持人:
class ProfilePresenter(private val mView: ProfileContract.View) : ProfileContract.Handler {
override fun loadData() {
mView.showLoading()
mUserService.user()
.compose(RxUtil.mapper())
.subscribe({ response ->
loadDataSuccess()
}, { error ->
//stuff
})
}
}
谢谢!
答案 0 :(得分:0)
如果您使用return
声明,则您的测试将以成功状态结束。
答案 1 :(得分:0)
我认为您的测试设置存在一个基本问题:
您不使用verify
来检查一个函数是否在同一个类中调用另一个函数。 Verify
用于验证测试类调用其他(模拟)类的函数。如果我没有弄错的话,你的设置实际上应该给你一条错误信息,告诉你不能在实例化的类上使用verify
。
如果要检查onCompleteClicked()
是否产生正确的结果,您应该做什么 - 检查onStuffComplete()
功能内部更改的数据是否设置正确。您可以使用assert
。
例如,我们可以说onStuffCompleted()
将completeCounter
设置为1
@Test
public void onCompleteClicked() {
presenter.onStuffCompleteClicked();
assertEquals(completCounter , 1);
}
并回答您的原始问题:verify
(和assert
)将在满足要求时通过(并且整个测试将通过),否则将失败。您不需要添加任何其他内容(但是再次:verify
仅适用于模拟的类)。