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 )创建的,一个是由PresentergetObservable )创建的。 这两个不相等,所以Mockito给比较失败。

相反,你可以使用any

 verify(useCase).execute(any(DisposableObserver::class.java), eq(someParams))