我已经看到了如何使用TestSubscriber
测试可观察性,但是我不知道如何测试Completable.doOnSuccess
回调。具体来说就是这种方法:
fun setAuthToken(authToken: AuthToken): Completable {
this.authToken = authToken
return Completable.fromSingle<User>(api
.getCurrentUser()
.doOnSuccess {
user = it
})
}
答案 0 :(得分:1)
这完全不需要与RxJava测试订阅者一起测试(取决于其余代码)。
记住-您不想测试内部状态,或者至少不要做得尽可能少。内部状态和类结构可以更改,并且可能会经常更改。因此,检查用户是否分配给该字段是不明智的做法。
因此,您可以阻塞Completable
,然后声明(称为“服务器”)服务器类的状态,但是我极力劝阻这样做: / strong>
server.setAuthToken(AuthToken("token"))
.blockingAwait()
assertThat(server.user, equalTo(expectedUser))
您要测试的是行为。
您可能不会仅仅为了拥有一些字段而将用户分配给该字段。您正在做此事以稍后使用用户的信息。因此,首先您应该调用setAuthToken和然后真正使用用户信息的调用函数。然后,您可以断言所使用的信息是否正确并且来自正确的用户。
因此示例测试(取决于类)可能如下所示:
server.setAuthToken(AuthToken("token"))
.andThen(server.sendRequest())
.blockingAwait()
// assert if correct user info was sent
或
server.setAuthToken(AuthToken("token"))
.andThen(server.sendRequest())
.test()
// assert if correct user info was sent