首页 > 解决方案 > 没有休息模板bean的模拟请求

问题描述

我试图在集成测试中模拟休息模板请求。问题是 rest 模板不是 bean 并且使用 new 关键字创建。

restTemplate = getRestTemplate();
resttemplate.postforentity(...) // need to mock

    private synchronized RestTemplate getRestTemplate() {
    if (restTemplate == null) {
      // set interceptors
    }
    return restTemplate;
}

我怎样才能模拟这个请求?

标签: javaspring-bootmockitointegration-testing

解决方案


你可以尝试使用MockRestServiceServer.

像这样的东西:

MockRestServiceServer.MockRestServiceServerBuilder builder = MockRestServiceServer.bindTo(restTemplate);
mockServer = builder.build();

在代码的某处,像这样:

mockServer.expect(ExpectedCount.manyTimes(), requestTo(new StringContains("<some string>")))
                    .andRespond(withSuccess("<JSON body>"), MediaType.APPLICATION_JSON))

有很多匹配器和存根请求的方法,请阅读文档。


推荐阅读