从@WebMvcTest中排除特定@Bean的最佳方法是什么

时间:2019-08-23 09:40:23

标签: spring-boot testing

通过javax.servlet.Filter而不是@WebMvcTest来定义特定@Bean的{​​{1}}的最佳方式是什么?

更多信息: @Component @WebMvcTest适用于排除通过组件扫描定义的bean(即excludeFilters)。但是,将通过@Component定义的bean从特定的@Bean中排除并不容易。不必将那些bean排除在测试类中,我必须确保它们不会被切片拾取,然后手动将其包括在内。一种方法是根据需要在测试中包括或排除它们的方式将bean分组为不同的@WebMvcTest类。但是,由于测试框架的限制,我开始通过创建不必要的@Configuration类来破坏项目结构,这些类可能没有多大意义。

嘲笑呢? 在某些情况下,例如此问题顶部描述的情况,模拟是不合适的。模拟@Configuration并没有多大意义,因为您需要调用链过滤器的其余部分。

1 个答案:

答案 0 :(得分:0)

您需要很好地管理依赖项注入。组件或Bean的所有依赖项都应通过Constructor对象注入。这样,在测试用例中,当您创建测试类的对象时,它将期望您传递该类所需的所有bean。然后,您可以根据自己的逻辑传入模拟类或空值。