gpt4 book ai didi

java - @WebMvcTest 由于某种原因创建多个 Controller

转载 作者:行者123 更新时间:2023-12-02 10:09:49 26 4
gpt4 key购买 nike

我正在尝试使用 @WebMvcTest 创建 Controller 测试,据我了解,当我添加测试类的 @WebMvcTest(ClientController.class) 注释时它不应该创建大量的 bean,而只创建该 Controller 需要的 bean。

我正在使用 @MockBean 来模拟此 Controller 所需的 bean,但不知何故它失败了,但有一个异常(exception),即另一个服务不存在“没有合格的 bean”此 Controller 需要但另一个 Controller 需要。

所以这个测试失败了:

@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逻辑?

最佳答案

我找到了解决方法。不使用@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 不起作用

关于java - @WebMvcTest 由于某种原因创建多个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55078125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com