kotlin测试whith mockito:比较失败
我试图用简单的测试主持人来覆盖,看起来像下一个:
class Presenter{ fun getData(params:SomeParams) { usecase.execute(getObservable, params) } private fun getObservable() = object :DisposableObserver{ 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 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( mock
)创建的,一个是由Presenter
( getObservable
)创建的。 这两个不相等,所以Mockito给比较失败。
相反,你可以使用any
:
verify(useCase).execute(any(DisposableObserver::class.java), eq(someParams))