我有一个简单的控制器,例如
@Controller
public class FooController
{
@Autowired
private BarService barService;
@RequestMapping(value = "/foo", method = RequestMethod.GET)
public String displayFoo()
{
return "foo";
}
}
当我想做一个
@WebMvcTest
时,我必须创建大量的@MockBeans
来防止NoSuchBeanDefinitionException
。@RunWith(SpringRunner.class)
@WebMvcTest
@Import(WebSecurityConfig.class)
public class FooControllerTest
{
@MockBean ...
@MockBean ...
@MockBean ...
...
...
}
这是否意味着
BarService
正在以某种方式创建依赖关系链? (它具有某些依赖性,但某些@MockBean
似乎完全不相关)。问题是,我为不同控制器添加的每个
@WebMvcTest
也需要相同的@MockBean
。是否应该使用
@TestConfiguration
之类的注释为DRY主体指定所有@MockBean
? 最佳答案
我再次查看了此内容,发现可以将控制器名称传递给@WebMvcTest
,例如@WebMvcTest(FooController.class)
。
指定要测试的控制器。如果所有{@code
@Controller} bean应该添加到应用程序上下文中。
关于spring-mvc - 避免@MockBeans在Spring Boot @WebMvcTest测试中扩散,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49084504/