【问题标题】:kotlin test whith mockito: comparison Failurekotlin test whith mockito:比较失败
【发布时间】: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)

那么我得到这个错误是什么以及如何避免它并用测试覆盖这个方法?谢谢!

【问题讨论】:

标签: android kotlin mockito


【解决方案1】:

您正在尝试比较两个不同的实例:一个由 Mockito (mock) 创建,一个由 Presenter (getObservable) 创建。两者不相等,所以Mockito给出比较失败。

相反,您可以使用any

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-29
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多