在集成测试中使用SpringBoot测试伪造一个bean

时间:2018-10-02 12:34:19

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

与@MockBean和@SpyBean一样,是否有类似于@FakeBean / @DummyBean的东西?

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

例如,当Bean是上下文数据收集器时,它非常有用,因此可以在每次测试后使用MockReset.clean清理它。

最干净的方法是什么?即使我们真的不间谍,@ SpyBean还是走的路吗?

1 个答案:

答案 0 :(得分:1)

我认为这不是一个好主意。自动创建bean会产生很大的开销,因为在某些情况下,逐步创建该过程将是整个上下文。最好创建TestContext并控制Bean的创建,因为需要在哪里创建真实的bean,在哪里需要创建模拟。如果创建了模拟,则与自动过程相比,将不会创建模拟中的Bean,并且测试上下文不需要该Bean。

PS 。Spring具有良好的错误说明(与所需的bean声明有关),并且可以在类级别使用多个类声明@MockBean@SpyBean,以简化和快速声明。