Rx onErrorReturn 在测试用例运行时不调用



我有

public Single<APIResponse> getPayment(Identity identity, String id) {
    return client.getPayment(identity, id).onErrorReturn(__ -> getTheSameEntityIfError(id));
}

client是一个调用外部服务的Web服务客户端如果从 client.getPayment 返回任何错误,那么它将调用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)));
    }
}

在这种情况下,我想模拟外部服务是否client.getPayment()返回错误,然后调用getTheSameEntityIfError(id)。我希望调用onErrorReturn操作,但它总是抛出NotFoundException并且从未调用onErrorReturn

知道出了什么问题吗?

你模拟抛出client.getPayment()而不是返回RxJava可以使用的东西,因此RxJava甚至没有参与这种情况。使client.getPayment返回一个Single.error()

相关内容

  • 没有找到相关文章

最新更新