Java 测试用例运行时不调用Rx onErrorReturn
我有 在这种情况下,我想模拟外部服务Java 测试用例运行时不调用Rx onErrorReturn,java,junit,mocking,mockito,rx-java,Java,Junit,Mocking,Mockito,Rx Java,我有 在这种情况下,我想模拟外部服务client.getPayment()是否返回错误,然后调用getthesamentityiferror(id)。 我希望调用onerrorreen操作,但它总是抛出NotFoundException,而onerrorreen从未调用 你知道怎么回事吗?你模拟客户机.getPayment()抛出而不是返回RxJava可以处理的东西,因此RxJava甚至不参与这种情况。让client.getPayment返回一个Single.error()您模拟client.g
client.getPayment()
是否返回错误,然后调用getthesamentityiferror(id)
。
我希望调用onerrorreen
操作,但它总是抛出NotFoundException
,而onerrorreen
从未调用
你知道怎么回事吗?你模拟客户机.getPayment()抛出而不是返回RxJava可以处理的东西,因此RxJava甚至不参与这种情况。让
client.getPayment
返回一个Single.error()
您模拟client.getPayment()
抛出,而不是返回RxJava可以处理的东西,因此RxJava甚至不参与这种情况。让client.getPayment
返回一个Single.error()
@akarnokd像魔术一样工作。请添加您的评论作为答案,以便我可以接受它作为正确的一个。谢谢
public Single<APIResponse> getPayment(Identity identity, String id) {
return client.getPayment(identity, id).onErrorReturn(__ -> getTheSameEntityIfError(id));
}
@RunWith(MockitoJUnitRunner.class)
public class AdapterTest {
@Mock
PaymentsClient client;
@InjectMocks
Adapter adapter;
Identity identity = testIdentity();
PaymentEntity payment = testPayment();
@Test
public void getPayment() {
when(client.getPayment(any(), any())).thenThrow(new NotFoundException());
APIResponse apiResponse = adapter.getPayment(identity, "id").blockingGet();
assertThat(payment.getId(), equalTo(apiResponse.getId(1)));
}
}