【问题标题】:Fake a bean with SpringBoot test on an Integration test在集成测试中使用 Spring Boot 测试伪造 bean
【发布时间】:2019-03-07 14:05:03
【问题描述】:

和@MockBean 和@SpyBean 一样,有没有类似@FakeBean / @DummyBean 的东西?

这个想法是实例是 100% 真实的(具有预期的生产内部状态)并且它覆盖(或添加 bean,以防它未在配置中声明)上下文中的那个。理想情况下,您不需要创建一个 TestConfiguration 类并将其设置为 Primary,因为这样您就可以在每个测试的基础上控制伪造,仅在您需要它时。否则它使用主要的。

例如,当 bean 是上下文数据收集器时,它非常有用,因此可以使用 MockReset.AFTER 清除它。

实现这一目标的最简洁方法是什么。即使我们不是真正的间谍,@SpyBean 是否可行?

【问题讨论】:

  • 我认为这不是一个好主意。自动创建 bean 可能会产生很大的开销,因为在某些情况下逐步创建整个上下文的过程。最好创建 TestContext 并控制 bean 创建,因为在哪里需要创建真正的 bean,在哪里需要创建 mock。如果您创建 mock ,其中的 bean 将不会被创建,也不会被您的测试上下文所需要,这与自动过程相反。
  • 你能用这个写一个答案吗,我从其他人那里听到了这个解释,我不同意

标签: java spring spring-boot integration-testing spring-test


【解决方案1】:

我认为这不是一个好主意。自动创建 bean 可能会产生很大的开销,因为在某些情况下逐步创建整个上下文的过程。最好创建 TestContext 并控制 bean 创建,因为在哪里需要创建真正的 bean,在哪里需要创建 mock。如果您创建 mock ,其中的 bean 将不会被创建并且您的测试上下文不需要,与自动过程相反。

PS.Spring 有很好的错误解释(与所需的 bean 声明有关),@MockBean@SpyBean 可以在类级别声明多个类,以便轻松快速地声明。

【讨论】:

    猜你喜欢
    • 2020-02-25
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 2015-08-20
    • 2020-04-24
    • 2017-10-27
    • 1970-01-01
    • 2018-11-09
    相关资源
    最近更新 更多