【发布时间】:2017-12-01 04:51:03
【问题描述】:
我正在尝试覆盖测试简单演示者,如下所示:
class Presenter{
fun getData(params:SomeParams) {
usecase.execute(getObservable, params)
}
private fun getObservable() = object :DisposableObserver<SomeData>{
override fun onComplete() {}
override fun onNext(t:SomeData) {}
override fun onError(e: Throwable) {}
}
}
这是我的简单测试:
@Test
fun getContacts() {
presenter.getData()
var observer = Mockito.mock(DisposableObserver::class.java) as DisposableObserver<SomeData>
verify(useCase).execute(observer, someParams)
}
在最后一行之后我得到下一个错误:
Argument(s) are different! Wanted:
useCase.execute(
com.test.PresenterTest$getObservable$o$1@579d011c,
kotlin.Unit
);
-> at com.test.execute(UseCaseObservable.kt:37)
Actual invocation has different arguments:
useCase.execute(
com.test.Presenter$getObservableObserver$1@733c423e,
kotlin.Unit
);
-> at com.test.Presenter.getObservable(Presenter.kt:43)
那么我得到这个错误是什么以及如何避免它并用测试覆盖这个方法?谢谢!
【问题讨论】:
-
看看这个问题(特别是如何在这种情况下使用 Mockito 的 ArgumentCaptor 类stackoverflow.com/questions/47565887/…