Unit testing REST模板单元测试
我正在尝试对一个在内部调用resttemplate的方法进行单元测试。但不知何故,我的测试不起作用。我想测试的方法看起来很简单Unit testing REST模板单元测试,unit-testing,resttemplate,Unit Testing,Resttemplate,我正在尝试对一个在内部调用resttemplate的方法进行单元测试。但不知何故,我的测试不起作用。我想测试的方法看起来很简单 public Integer createAccount(Request request) { final String uri = "http://localhost:8080/stubs/otl/account/create"; return restTemplate.postForObject(uri, request, Integer.class
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));
}
当我运行测试时,我得到了一个响应
java.lang.AssertionError:在1个请求中预期有0个请求被拒绝
在
org.springframework.test.web.client.MockRestServiceServer.verify(MockRestServiceServer.java:167)
谁能告诉我我遗漏了什么或做错了什么。一个
MockRestServiceServer
中有一个expectedRequests
列表,表示对服务器的请求,这些请求已经设置好,并且预期会被调用
verify()
然后断言所有这些预期请求都已被调用并命中服务器
因此,在您的案例中,
“http://localhost:8080/stubs/otl/account/create“
请求是预期的,但在调用verify()
方法之前没有被调用,因此verify()
的断言失败。MockRestServiceServer中有一个expectedRequests
列表,表示已设置并预期将调用的对服务器的请求
verify()
然后断言所有这些预期请求都已被调用并命中服务器
因此,在您的案例中,
“http://localhost:8080/stubs/otl/account/create“
请求是预期的,但在调用verify()
方法之前尚未调用,因此verify()
的断言失败。我也遇到了同样的问题。出现上述错误的原因可能是rest url未被命中,或者结果未达到预期。我也遇到了同样的问题。出现上述错误的原因可能是rest url未被命中,或者结果未达到预期