首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >REST模版单元测试

REST模版单元测试
EN

Stack Overflow用户
提问于 2015-10-29 12:06:51
回答 3查看 4.3K关注 0票数 1

我正在尝试对一个方法进行单元测试,该方法在内部调用一个test模板。但不知怎么我的测试不起作用了。我想测试的方法看起来

代码语言:javascript
复制
public Integer createAccount(Request request) {
    final String uri = "http://localhost:8080/stubs/otl/account/create";
    return restTemplate.postForObject(uri, request, Integer.class);
}

我的单元测试看起来

代码语言:javascript
复制
@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执行

有人能告诉我我错过了什么或者做错了什么吗?

EN

回答 3

Stack Overflow用户

发布于 2016-10-06 08:33:19

MockRestServiceServer中有一个expectedRequests列表,该列表表示对服务器的请求,这些请求已经设置并预期将被调用。

然后,verify()断言所有这些预期的请求都已被调用并命中服务器。

因此,在您的示例中,"http://localhost:8080/stubs/otl/account/create"请求是预期的,但是在调用verify()方法之前还没有被调用,因此verify()失败了它的断言。

票数 1
EN

Stack Overflow用户

发布于 2017-01-19 06:16:55

我也面临着同样的问题。以上错误的原因要么是rest url没有被击中,要么结果没有按预期来。

票数 0
EN

Stack Overflow用户

发布于 2021-11-13 18:38:16

最近遇到了这个问题,我花了很长时间才弄明白。我没有碰到我的端点,而您可能也是这样做的。这个问题可能是与此相关的。也许restTemplate在测试或服务中没有被正确设置。在某个地方对null模板执行空检查

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33413793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档