测试:doAnswer从未调用,因为带有any()的参数不匹配

时间:2019-06-15 15:30:53

标签: android kotlin mockito

我对从未被调用的doAnswer声明有疑问。 首先,说我对其他方法有相同的声明,并且它起作用。所以我的嫌疑人在匹配的参数中。

这是我要测试的代码:

fun getPreviewsFromClient(categoryFilter: CategoryFilter, requestToken: String?, callback: Callback<Output, Throwable>) {
    client.getPreviews(categoryFilter.metadataCategory,
            REQUEST_LIMIT,
            requestToken,
            object : ClientListener<ContentViewList>() {
                override fun onSuccess(result: ContentView) {
                    //code
                }

                override fun onError(error: Throwable) {
                    callback.onError(error)
                }
            })
}

data class Output(val nextRequestToken: String, val list: List<Previews>)

这是测试代码:

@Test
internal fun `Should call onError when error fetching category`() {
    val categoryRequest = CategoryFilter.MyCategory()
    val testError = Throwable("Test error")

    doAnswer {
        val args = it.arguments
        (args[3] as ClientListener<ContentViewList>).onError(testError)
        null
    }.whenever(Client).getPreviews(any(), any(), any(), any())

    filesInteractor.getPreviewsFromClient(categoryRequest, callback)

    Verify on callback that callback.onError(testError) was called
}

如您所见,代码很简单,甚至有两个回调(由于要求),测试中根本没有异步任务。因此执行线程是唯一的。

运行它时,会收到配置警告和“想要但未调用”错误。

  

2019年6月15日下午5:24:00   org.junit.platform.launcher.core.LauncherConfigurationParameters   fromClasspathResource警告:已发现2   类路径中的“ junit-platform.properties”配置文件;只要   将使用第一个。 2019年6月15日5:24:00 PM   org.junit.platform.launcher.core.LauncherConfigurationParameters   fromClasspathResource INFO:加载JUnit Platform配置   来自类路径资源的参数   [文件:/ Users /.../ build / intermediates / sourceFolderJavaResources / test / dev / debug / junit-platform.properties]。   2019年6月15日5:24:01 PM   org.junit.jupiter.engine.config.EnumConfigurationParameterConverter   获取信息:使用测试实例生命周期模式“ PER_CLASS”,通过   'junit.jupiter.testinstance.lifecycle.default'配置   参数。

     

想要但不被调用:callback.onError(       java.lang.Throwable:测试错误);

任何想法可能是什么原因?谢谢!

0 个答案:

没有答案