【发布时间】:2020-11-24 15:46:08
【问题描述】:
我有一段代码无法通过测试正确覆盖。 我正在使用 Mockito 库。 而且我在开始测试的那一刻遇到了困难。
下面是测试代码:
@Test
public void testLoadCar() {
when(remoteService.loadData()).thenReturn(new DataResult<DataCar>("", "", new DataCar()));
when(dataResult.hasError()).thenReturn(true);
when(dataResult.response.hasHeaders()).thenReturn(true);
requestNetwork = new RequestNetwork(remoteService);
Response<DataCar> response = requestNetwork.load(request);
}
这些是测试类中的对象:remoteService、dataResult、request。
我担心我尝试实现 when 方法的那一刻:
when(dataResult.response.hasHeaders()).thenReturn(true);
我想知道这样的录音是否有效。 如果它不起作用,那么我们该如何处理这个时刻:
protected Response createResponse(DataResult<T> dataResult) {
if (dataResult.hasError() || !dataResult.response.hasHeaders()) {
return dataResult.getErrorMessage());
} else {
return Response.data(dataResult.value);
}
}
这是被测系统 (SUT) 上具有 createResponse() 方法的方法。此方法包含对 DataResult 对象的模拟方法的调用。 实现 dataResult.hasError() 我明白了:
when (dataResult.hasError ()). thenReturn (true);
然后! DataResult.response.hasHeaders() 我有问题。因为我不明白如何替换我需要的值。
【问题讨论】:
标签: java android testing junit mockito