Mockito从来没有()不工作,然后rxjava2
我正在测试用Kotlin编写的一段相当简单的代码:
o1.updateUser(params) .andThen(o2.reload())
当updateUser失败时,我预计重装将不会被执行。 但是当使用Mockito 2和jUnit 5进行测试时,就会调用这个模拟。
嘲笑是这样做的:
given(o1.updateUser(user)).willReturn(Completable.error(IllegalArgumentException()) given(o2.reload()).willReturn(Completable.complete())
现在的问题是,代码的行为如预期的,这意味着在这种情况下,o2是从来没有实际调用,但单元测试Mockito声称有一个o1的调用。
测试断言如下所示:
verify(o2, never()).reload()
我在这里做错了吗? 有没有解决的办法? 我是不是很了解操作员?
你在测试中写的是:
Completable c2 = o2.reload(); o1.updateUser(params).andThen(c2);
你可能想要的是:
o1.updateUser(params).andThen(Completable.defer(() -> o2.reload()));
这样,只有在执行和andThen
正常完成并订阅了延迟Completable
时,才会调用o2.reload()
。