我有
public Single<APIResponse> getPayment(Identity identity, String id) {
return client.getPayment(identity, id).onErrorReturn(__ -> getTheSameEntityIfError(id));
}
client
是一个网络服务客户端,可调用外部服务
如果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
。
有什么想法吗?
答案 0 :(得分:1)
您嘲笑client.getPayment()
抛出而不是返回RxJava可以使用的东西,因此RxJava甚至不参与这种情况。使client.getPayment
返回Single.error()
。