如何在Android上对RxJava Completable.error进行单元测试
我有一个函数,它返回一个Completable,如果另一个函数失败,它将返回如何在Android上对RxJava Completable.error进行单元测试,android,rx-java,rx-java2,Android,Rx Java,Rx Java2,我有一个函数,它返回一个Completable,如果另一个函数失败,它将返回Completable.error(运行时异常(“消息”),否则返回Completable.complete() 我试图为此编写一个单元测试,并查看流程是否正确地指向错误代码和成功代码,但在我的测试中,我无法使用 underTest.unregisterFromService().test().assertComplete().assertNoErrors() 有人知道如何在单元测试中检查Completable.erro
Completable.error(运行时异常(“消息”)
,否则返回Completable.complete()
我试图为此编写一个单元测试,并查看流程是否正确地指向错误代码和成功代码,但在我的测试中,我无法使用
underTest.unregisterFromService().test().assertComplete().assertNoErrors()
有人知道如何在单元测试中检查Completable.error()
值吗?有一个assertError
为此,大多数情况下使用文档中以Thorwable
类型为参数的版本:
断言此TestObserver/TestSubscriber仅收到一个onError事件,该事件是指定errorClass的实例
用法:
yourCompletable
.test()
.assertError(RuntimeException::class.java)
您可以找到三个版本的assertError
我相信您正在寻找的是
yourCompletable
.test()
.assertErrorMessage("your error message")
我得到了一个java.lang.AssertionError:No errors(闩锁=0,值=0,错误=0,完成=1)
,这就是为什么我感到困惑的原因:(好吧,也许你正在测试的案例没有以RuntimeException结束?),一个类似于Completable.error的代码(RuntimeException(“message”).test().assertError(RuntimeException::class.java),通过测试!如果您需要函数代码的帮助,请共享它,以便我们提供帮助。是否有方法测试异常消息?您可以使用断言版本的assertErrorpublic final U assertError(predicate errorPredicate)
进行测试,例如在Kotlin中是这样的,assertError{it.message==expectedMessage}
要测试错误消息,有一个更好的API:public final U assertErrorMessage(字符串消息)这对我帮助很大。