Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 控制器单元测试无法自动连接所需的bean_Java_Spring_Spring Mvc_Junit_Mockmvc - Fatal编程技术网

Java 控制器单元测试无法自动连接所需的bean

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

我正在尝试为spring controller编写一个单元测试,myService类是在myController中自动连接的,我模拟了myService类,但当我调试代码时,它会出现null

myService=null

我无法为我的控制器注入此服务

   @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();
这应该行得通