繁体   English   中英

如何让 Spring Cloud Contract 在每次测试之前或之后重置 WireMock

[英]How to make Spring Cloud Contract reset WireMock before or after each test

我们正在编写一个 Spring Boot 应用程序并使用 Cloud Contract WireMock 支持来存根支持服务。 我们的测试类是这样注释的:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@AutoConfigureWireMock(port = 0)
public class Tests...

这工作正常,除了一件事:我们发现 Spring Cloud 似乎没有在测试之间重置 WireMock,尤其是删除存根,因此测试没有被正确隔离。 当然,您可以使用包含reset()@Before方法自己完成此操作,但我们想知道这是否是故意的。 是否有我们忽略的选项或必须使用的附加注释?

毕竟,不可能在@BeforeClass方法中定义存根,如果总是执行重置,存根就会消失,所以我们想知道什么反对开箱即用?

可以随时重置 WireMock 服务器,删除所有存根映射并删除请求日志。 如果您使用任一 JUnit 规则,这将在每个测试用例开始时自动发生。 但是,您可以通过在 Java 中调用WireMock.reset()或将带有空正文的 POST 请求发送到http://<host>:<port>/__admin/reset.

要仅重置存根映射而保持请求日志完好无损,请发送 DELETE 到http://<host>:<port>/__admin/mappings.

希望这是有用的。

配置 Spring Boot 属性:

wiremock:
  reset-mappings-after-each-test: true

参考: https : //github.com/spring-cloud/spring-cloud-contract/commit/67119e62f6b30da56b06aade87ec3ba61de7fd24

我最终在@BeforeEach 中注入了 WireMockServer 并运行了wireMockServer.resetAll()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM