Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android上对RxJava Completable.error进行单元测试_Android_Rx Java_Rx Java2 - Fatal编程技术网

如何在Android上对RxJava Completable.error进行单元测试

如何在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,如果另一个函数失败,它将返回
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),通过测试!如果您需要函数代码的帮助,请共享它,以便我们提供帮助。是否有方法测试异常消息?您可以使用断言版本的assertError
public final U assertError(predicate errorPredicate)
进行测试,例如在Kotlin中是这样的,
assertError{it.message==expectedMessage}
要测试错误消息,有一个更好的API:public final U assertErrorMessage(字符串消息)这对我帮助很大。