gpt4 book ai didi

java - Controller 单元测试无法 Autowiring 所需的 bean

转载 作者:行者123 更新时间:2023-12-02 01:41:10 24 4
gpt4 key购买 nike

我正在尝试为 Spring Controller 编写单元测试,myService 类在 myController 中 Autowiring ,我已经模拟了 myService 类,但是当我调试代码时,它是即将到来

myService = null

我无法为我的 Controller 注入(inject)此服务。

   @RunWith(MockitoJUnitRunner.class)
public class TestManageDevices {

private MockMvc mockMvc;

@Mock
MyService myService;

@Before
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(new MyController())
.build();
}

@Test
public void shouldPass() throws Exception {
Mockito.doNothing().when(myService).someMethod(Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
JobResponse jobResponse = JobResponse.builder().responseCode(0).build();
jobResponse.requestObj = "mockedStringObject";

RequestBuilder requestBuilder = MockMvcRequestBuilders.post("/pathfortest")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.param("id", Mockito.anyString());

MvcResult result = mockMvc.perform(requestBuilder).andReturn();


System.out.println(result.getResponse().getContentAsString());

MockHttpServletResponse response = result.getResponse();


Assert.assertEquals(HttpStatus.CREATED.value(), response.getStatus());

}

}

最佳答案

您正在 setUp 方法中使用 new MyController() 手动更新 Controller ,因此不会注入(inject)依赖项。

创建 Controller 类型的变量

@InjectMocks
MyController myController;

setUp 方法中创建 mockMVC 实例时使用此方法,如下所示:

mockMvc = MockMvcBuilders.standaloneSetup(myController).build();

这应该有效。

关于java - Controller 单元测试无法 Autowiring 所需的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54440958/

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