为了账号安全,请及时绑定邮箱和手机立即绑定

@WebMvcTest 出于某种原因创建了多个控制器

@WebMvcTest 出于某种原因创建了多个控制器

喵喵时光机 2022-07-27 19:59:33
我正在尝试使用@WebMvcTest创建控制器测试,据我所知,当我将@WebMvcTest(ClientController.class)注释放在测试类中时,它不应该创建很多bean,而只是这个控制器需要的bean .我正在使用@MockBean 模拟此控制器所需的 bean ,但不知何故,它失败了,但有一个例外,即该控制器不需要但另一个服务的另一个服务的“没有合格的 bean” 。所以这个测试失败了:@RunWith(SpringRunner.class)@WebMvcTest(controllers = ClientController.class)public class ClientControllerTest {    @MockBean    ClientService clientService;    @Test    public void getClient() {        assertEquals(1,1);    }}我创建了一个相同版本(2.0.1)的空 Spring Boot 项目,并尝试在那里创建测试。它工作得很好。所以我的问题可能是因为我的项目有很多依赖项,但也许在这种情况下有一些常见的做法?什么会弄乱@WebMvcTest逻辑?
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

我找到了解决方法。不使用@WebMvcTest 和@MockBean,而是手动创建所有内容:


//@WebMvcTest(ClientController.class)

@RunWith(SpringRunner.class)

public class ClientControllerTest {


    private MockMvc mockMvc;

    @Mock

    ClientService clientService;


    @Before

    public void setUp() {

        mockMvc = MockMvcBuilders.standaloneSetup(

                new ClientController(clientService)

        ).build();

}

适用于 Spring 1.4.X 和 Spring Boot 2.X(那里和那里有不同的异常),但仍然没有解释为什么 @WebMvcTest 不起作用


查看完整回答
反对 回复 2022-07-27
  • 1 回答
  • 0 关注
  • 87 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号