通过javax.servlet.Filter
而不是@WebMvcTest
来定义特定@Bean
的{{1}}的最佳方式是什么?
更多信息:
@Component
@WebMvcTest
适用于排除通过组件扫描定义的bean(即excludeFilters
)。但是,将通过@Component
定义的bean从特定的@Bean
中排除并不容易。不必将那些bean排除在测试类中,我必须确保它们不会被切片拾取,然后手动将其包括在内。一种方法是根据需要在测试中包括或排除它们的方式将bean分组为不同的@WebMvcTest
类。但是,由于测试框架的限制,我开始通过创建不必要的@Configuration
类来破坏项目结构,这些类可能没有多大意义。
嘲笑呢?
在某些情况下,例如此问题顶部描述的情况,模拟是不合适的。模拟@Configuration
并没有多大意义,因为您需要调用链过滤器的其余部分。
答案 0 :(得分:0)
您需要很好地管理依赖项注入。组件或Bean的所有依赖项都应通过Constructor对象注入。这样,在测试用例中,当您创建测试类的对象时,它将期望您传递该类所需的所有bean。然后,您可以根据自己的逻辑传入模拟类或空值。