2017-12-01 6 views
1

私は次のように見えるのテスト簡単なプレゼンター、でカバーしようとしています:ここkotlinテスト:比較障害

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(
    [email protected], 
    kotlin.Unit 
    ); 
    -> at com.test.execute(UseCaseObservable.kt:37) 
    Actual invocation has different arguments: 
    useCase.execute(
    [email protected], 
    kotlin.Unit 
    ); 
    -> at com.test.Presenter.getObservable(Presenter.kt:43) 

ので、私はこのエラーを取得していますし、どのようにそれを回避し、テストしてこのメ​​ソッドをカバーするために何を?ありがとう!

+0

この質問を見てください(特に、このような場合のためにMockitoのArgumentCaptorクラスを使用する方法https://stackoverflow.com/questions/47565887/how-引数をキャプチャする引数 - 関数を使用する - 引数キャプタ - モッキート/ 47566488#47566488 – SimY4

答えて

0

Mockito(mock)で作成されたものとPresentergetObservable)で作成されたものの2つの異なるインスタンスをお互いに比較しようとしています。 2人はお互いに等しくないので、Mockitoは比較の失敗を与えます。

代わりに、あなたが使用することができany

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