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

arc*_*ldo 11 java spring wiremock spring-cloud

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

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@AutoConfigureWireMock(port = 0)
public class Tests...
Run Code Online (Sandbox Code Playgroud)

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

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

Meb*_*Joe 1

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

\n\n

要仅重置存根映射,使请求日志保持完整,请发送 DELETE 至http://<host>:<port>/__admin/mappings.

\n\n

希望这有用。

\n

  • 感谢您的回复。因为我们使用 Spring Cloud Contract 的 WireMock 支持,所以我们不使用 WireMockRule。我的问题是:为什么 Cloud Contract 不会在每次测试前自动重置 WireMock?这是故意的吗?如果是的话,为什么?或者这是一个非自愿的遗漏,又名错误? (2认同)