我正在尝试对一个方法进行单元测试,该方法在内部调用一个test模板。但不知怎么我的测试不起作用了。我想测试的方法看起来
public Integer createAccount(Request request) {
final String uri = "http://localhost:8080/stubs/otl/account/create";
return restTemplate.postForObject(uri, request, Integer.class);
}我的单元测试看起来
@InjectMocks
AccountServiceImpl accountService;
@Mock
RestTemplate restTemplate;
@Value("${url.otl}")
private String urlOtl = "http://localhost:8080/stubs/otl/";
@Before
public void setUp(){
MockitoAnnotations.initMocks(this);
}
@Test
public void createAccountTest(){
MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
mockServer.expect(requestTo(urlOtl+"account/create"))
.andExpect(method(HttpMethod.POST))
.andRespond(withSuccess("1", MediaType.APPLICATION_JSON));
Request request = new Request();
Integer result = accountService.createAccount(request);
mockServer.verify();
Assert.assertEquals("1", String.valueOf(result));
}当我运行测试时,我得到了响应。
org.springframework.test.web.client.MockRestServiceServer.verify(MockRestServiceServer.java:167):预期在1次请求中有0次在java.lang.AssertionError执行
有人能告诉我我错过了什么或者做错了什么吗?
发布于 2016-10-06 08:33:19
MockRestServiceServer中有一个expectedRequests列表,该列表表示对服务器的请求,这些请求已经设置并预期将被调用。
然后,verify()断言所有这些预期的请求都已被调用并命中服务器。
因此,在您的示例中,"http://localhost:8080/stubs/otl/account/create"请求是预期的,但是在调用verify()方法之前还没有被调用,因此verify()失败了它的断言。
发布于 2017-01-19 06:16:55
我也面临着同样的问题。以上错误的原因要么是rest url没有被击中,要么结果没有按预期来。
发布于 2021-11-13 18:38:16
最近遇到了这个问题,我花了很长时间才弄明白。我没有碰到我的端点,而您可能也是这样做的。这个问题可能是与此相关的。也许restTemplate在测试或服务中没有被正确设置。在某个地方对null模板执行空检查
https://stackoverflow.com/questions/33413793
复制相似问题