我是Mockito测试的新手,并正在测试一个GET请求。
我已经模拟了调用,但现在我需要返回HttpResponse<Cars[]>
,因为这些值稍后在for循环中使用。
我该如何创建一个虚拟的HttpResponse
,其中的主体包含Car
对象数组。
使用GET请求的方法位于CarProvider
类中:
public HttpResponse<Cars[]> getCars(String carId, String carname) {
return Unirest.get(endpointUrl)
.header("Accept", MediaType.APPLICATION_JSON)
.queryString("carId",cardId)
.queryString("carname",carname)
.asObject(Cars[].class);
}
以下方法中在另一个类CarsUsers
中使用:
public List<Cars> getCars(String carId, String carname) {
HttpResponse<Cars[]> response = carProvider.getCars(carId, carname);
for(Cars car: response.getBody){
//use car and do something
}
我的测试方法如下:
public class TestClass {
@Mock
HttpResponse<Cars[]> httpresponse;
@Mock
CarsProvider carsProvider;
@Mock
CarsUser carsUser;
@Test
public void getCarsTest(){
Mockito.when(carsUser.getCars(Matchers.anyString(),
Matchers.anyString())).thenReturn(getDummyCarsList());
Mockito.when(carsProvider.getCars(Matchers.anyString(),
Matchers.anyString())).thenReturn(httpResponse);
}
private List<Cars> getDummyCarsList(){
//create a dummy list of cars
}
}
我在 for(Cars car: response.getBody){}
这一行代码中遇到了 NullPointerException
异常。
我猜测是因为 body 没有任何值,所以才会抛出异常。
感激任何帮助或建议。
谢谢
HttpResponse response = Mockito.mock(HttpResponse.class); Mockito.when(response.xxx).thenReturn(arrayOfCars);
但如果没有更多详细信息,很难确定您应该怎么做。请考虑发布一个 MCVE。 - glytchingwhen(response.getBody()).thenReturn(something)
。 - Andy Brown