我正在尝试为一个函数编写测试用例,如果验证通过,则返回一些数据抛出异常
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本身失败。
这里有什么问题?
由于
答案 0 :(得分:2)
失败是因为在使用返回值创建Observable之前调用validate()
。相反,您可以调用fromCallable(() -> validate(test))
并执行validate
延迟。