【发布时间】:2012-10-23 13:45:38
【问题描述】:
我有一个正在尝试测试的 Rest 服务客户端。 这是我要测试的客户端方法:
public RestPriceRow getPriceRow(String customer, String product, String qt)
throws Exception {
// Prepare acceptable media type
List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.APPLICATION_XML);
// Prepare header
HttpHeaders headers = new HttpHeaders();
headers.setAccept(acceptableMediaTypes);
HttpEntity<PriceRowDto> entity = new HttpEntity<PriceRowDto>(headers);
// Prepare response
RestPriceRow res = new RestPriceRow();
// Send the request as GET
try {
ResponseEntity<PriceRowDto> result =
restTemplate.exchange(baseURL + "{customerId}/{productId}/{quantity}",
HttpMethod.GET, entity, PriceRowDto.class, customer,product,qt);
PriceRowDto response = result.getBody();
return response;
} catch (Exception e) {
e.printStackTrace();
}
}
这是我的测试课:
@Before
public void setUp() {
RestTemplate r = mock(RestTemplate.class);
restPriceService = new RestPriceServiceImpl();
restPriceService.setRestTemplate(r);
restPriceService.setBaseURL("url");
}
@Test
public void prueba() {
PriceRowDto r = new PriceRowDto("100","200","9","10","0","19/11/2012");
try {
when(restPriceService.getPriceRow("100","200","16")).thenReturn(r);
} catch (Exception e) {
e.printStackTrace();
}
}
我的问题是,当我运行这个测试时,它在执行result.getBody() 时会抛出一个NullPointerException。 (结果为空)
【问题讨论】:
-
你不测试
getPriceRow,你模拟它。你测试什么?你的 SUT(被测系统)是什么,被嘲笑的合作者是什么? -
我以为我没有嘲笑服务.. 那么我需要更改什么来测试 getPriceRow?
标签: unit-testing rest mocking mockito