请我有点困惑,这个测试失败了,"java.lang.IllegalStateException: notNull(( 不能为空":
@Test
fun when_resume_subscribe() {
// WHEN
presenter.onStart()
// THEN
verify<Model>(model).subscribe(notNull()) // <---- fails here
}
以下是正在测试的方法:
override fun onStart() {
model.subscribe(object : Observer<Bar> {
override fun onCompleted() {
view?.showProgress(false)
}
//... more stuff...
请问发生了什么事?
这
基本上是使用 Generic 将 Null 对象封装到特定的类对象中。代码如下,我们在其中覆盖 any(( 以相应地处理问题。
private fun <T> any(): T {
Mockito.any<T>()
return uninitialized()
}
private fun <T> uninitialized(): T = null as T
有关更多详细信息,您可以查看此 https://medium.com/@elye.project/befriending-kotlin-and-mockito-1c2e7b0ef791 教程。
使用
<dependency>
<groupId>org.mockito.kotlin</groupId>
<artifactId>mockito-kotlin</artifactId>
<version>3.2.0</version>
<scope>test</scope>
</dependency>
将具有方法Mockito.anyOrNull()
该方法不会在不可为空的参数上失败...