【问题标题】:Mock request without rest template bean没有休息模板bean的模拟请求
【发布时间】:2019-12-26 13:24:13
【问题描述】:

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

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

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

如何模拟这个请求?

【问题讨论】:

  • 如果您正在测试集成,为什么要模拟请求?
  • 如果你想模拟一个从你的被测系统调用的服务器,你可能想看看the citrus framework
  • 为什么不将restTemplate 声明为 bean?

标签: java spring-boot mockito integration-testing


【解决方案1】:

您可以尝试使用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))

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

【讨论】:

  • 我没有正在测试的 REST 模板实例
  • 我认为您可能需要重新考虑项目的架构
猜你喜欢
  • 2021-07-13
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-18
  • 2019-07-27
  • 1970-01-01
  • 2021-06-24
相关资源
最近更新 更多