当前位置: 首页 > 知识库问答 >
问题:

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

海灵均
2023-03-14

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

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

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

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

共有3个答案

谷梁德容
2023-03-14

最后我注入了WireMockServer并运行了WireMockServer。@beforeach中的resetAll()

凌嘉勋
2023-03-14

WireMock服务器可以随时重置,删除所有存根映射并删除请求日志。如果您使用任何一个JUnit规则,这将在每个测试用例开始时自动发生。但是,您可以通过调用Java中的WireMock.reset()或向超文本传输协议发送带有空正文的POST请求来完成://

要仅重置存根映射,保持请求日志不变,请向http发送删除://

希望这是有用的。

须彭亮
2023-03-14

配置Spring启动属性:

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

裁判:https://github.com/spring-cloud/spring-cloud-contract/commit/67119e62f6b30da56b06aade87ec3ba61de7fd24

 类似资料:
  • 问题内容: 我的Spring-Boot-Mvc-Web应用程序在文件中具有以下数据库配置: 这是我所做的唯一配置。我在任何地方都没有进行任何其他配置。尽管如此,Spring和子系统会在每次Web应用程序运行时自动重新创建数据库。即在系统运行时重新创建数据库,而在应用程序结束后它包含数据。 我不了解此默认值,并期望它适合测试。 但是,当我开始运行测试时,我发现数据库仅重建一次。由于没有按预定义的顺序

  • 我想在测试套件中的每个测试之前和之后运行其他设置和拆卸检查。我看过赛程,但不确定它们是否是正确的方法。我需要在每次测试之前运行设置代码,并且需要在每次测试后运行拆卸检查。 我的用例是检查没有正确清理的代码:它会留下临时文件。在我的设置中,我将检查文件,在拆解中我也会检查文件。如果有额外的文件,我希望测试失败。

  • 问题内容: 我的Spring-Boot-Mvc-Web应用程序在文件中具有以下数据库配置: 这是我所做的唯一配置。我在任何地方都没有进行任何其他配置。尽管如此,Spring和子系统会在每次Web应用程序运行时自动重新创建数据库。即在系统运行时重新创建数据库,而在应用程序结束后它包含数据。 我不了解此默认值,并期望它适合测试。 但是,当我开始运行测试时,我发现数据库仅重建一次。由于没有按预定义的顺序

  • 我是新来的笑话,我试图用它来测试一个函数是否被调用。我注意到mock.calls.length不是每次测试都重置,而是累积。我怎样才能在每次考试前把它变成0?我不想我的下一次测试取决于前一次的结果。 我知道在开玩笑的时候,每个人之前都有——我应该用它吗?重置mock.calls.length的最佳方法是什么?非常感谢。 代码示例: Sum.js: Sum.test.js

  • 提前谢了。 否决表决时,请提供理由。

  • 使用Jest测试深层嵌套属性是否存在的最佳方法是什么。尝试以我想要的特定对象为目标将导致未定义的错误,因为其父对象不存在: 我应该以某种方式将这些连接起来,这样我就可以首先测试对象的存在,然后测试内部对象的存在吗?相当于在if语句中做这样的事情 或者像这样在一个元素上进行多个测试时,是否应该有单独的测试? 我也尝试过: 这有点管用?更好,但是需要我在测试文件中声明这个非常大的对象。这种非常深入的比