您的示例使用普通的单元测试来测试您的控制器。在此设置中,控制器由Mockito创建(控制器字段由Mockito的@InjectMocks注释)。
Mockito不了解Spring,因此在您的测试中不会设置Spring Security。
您需要使用SpringRunner来运行测试。该运行程序具有Spring意识,可以让您在运行测试之前正确初始化控制器。
测试应该看起来像这样(junit5):
@ExtendWith(SpringExtension.class)
@WebMvcTest(controllers = Controller.class)
public class ControllerTest {
@Autowired
private mockmvc mockmvc;
@MockBean
private Service serviceMock;
@Test
public void test() throws Exception {
mockmvc.perform(get(URL))
.andExpect(status().isOk());
}
}
查看我们的Spring文档或一些教程以获取更多信息
https://spring.io/guides/gs/testing-web/
https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html