猿问

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

我正在尝试使用@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逻辑?


喵喵时光机
浏览 88回答 1
1回答

汪汪一只猫

我找到了解决方法。不使用@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 不起作用
随时随地看视频慕课网APP

相关分类

Java
我要回答