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)));
    }
}