Java 控制器单元测试无法自动连接所需的bean
我正在尝试为spring controller编写一个单元测试,myService类是在myController中自动连接的,我模拟了myService类,但当我调试代码时,它会出现null myService=null 我无法为我的控制器注入此服务Java 控制器单元测试无法自动连接所需的bean,java,spring,spring-mvc,junit,mockmvc,Java,Spring,Spring Mvc,Junit,Mockmvc,我正在尝试为spring controller编写一个单元测试,myService类是在myController中自动连接的,我模拟了myService类,但当我调试代码时,它会出现null myService=null 我无法为我的控制器注入此服务 @RunWith(MockitoJUnitRunner.class) public class TestManageDevices { private MockMvc mockMvc; @Mock
@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()
手动更新控制器,因此不会注入依赖项
创建控制器类型的变量
@InjectMocks
MyController myController;
在setUp
方法中创建mockMVC
实例时使用此选项,如下所示:
mockMvc = MockMvcBuilders.standaloneSetup(myController).build();
这应该可以工作。您正在使用
设置方法中的new MyController()
手动更新控制器,因此不会注入依赖项
创建控制器类型的变量
@InjectMocks
MyController myController;
在setUp
方法中创建mockMVC
实例时使用此选项,如下所示:
mockMvc = MockMvcBuilders.standaloneSetup(myController).build();
这应该行得通