gpt4 book ai didi

java - 使用 TestSubscriber 测试 RxJava 异常

转载 作者:行者123 更新时间:2023-12-02 03:06:22 27 4
gpt4 key购买 nike

我正在尝试为一个函数编写测试用例,如果验证通过,则返回一些数据,否则抛出异常

private String validate(Test test) {
//Validation Logic which returns null or throws Exception

}

public Observable<Test> create(Test test) {
return Observable
.just(validate(test))
.flatMap(x -> testRepository
.create(test));
}

相同的测试用例

@Test
public void Should_ThrowException_When_NoData() {
Test test = sampleTest();
TestSubscriber<Test> subscriber = new TestSubscriber<>();
testService
.create(test)
.subscribe(subscriber);
subscriber.awaitTerminalEvent();
Throwable thrown = subscriber.getOnErrorEvents().get(0);
assertThat(thrown)
.isInstanceOf(CustomException.class)
.hasFieldOrPropertyWithValue("errorId", 102);

}

但是测试用例在 testService.create 本身上失败了。

这里有什么问题吗?

谢谢

最佳答案

它会失败,因为您在使用其返回值创建 Observable 之前调用了 validate()。相反,您可以调用 fromCallable(() -> validate(test)) 并推迟 validate 的执行。

关于java - 使用 TestSubscriber 测试 RxJava 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41678632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com