我对从未被调用的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:测试错误);
任何想法可能是什么原因?谢谢!