【发布时间】:2020-02-12 12:44:47
【问题描述】:
我编写了一个Spring Boot 应用程序,并且能够使用MockMvc 访问和测试Controller。问题是在测试期间没有强制执行安全性,我可以在没有用户的情况下访问Controller。
我做错了吗?这是预期的行为吗?
ControllerTest类:
@RunWith(MockitoJUnitRunner.class)
public class ControllerTest {
private MockMvc mockMvc;
@Mock
private Service service;
@InjectMocks
private Controller controller;
private final static String URL = "/test";
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
}
@Test
public void test() throws Exception {
mockMvc.perform(get(URL))
.andExpect(status().isOk());
}
}
【问题讨论】:
-
您正在使用 Mockito 运行,您正在创建您赢得的控制器实例,应该如何实施安全性?而是使用
@WebMvcTest,如 Spirng Boot 参考指南中所述。或者,如果您真的想坚持这一点,请按照 Spring Security 参考指南中的说明启用测试安全性。但是,我建议坚持使用@WebMvcTest。 -
@M.Deinum 我仍然很难理解如何使用
MockitoJUnitRunner启用安全性。你能指出我在 Spring Security 参考中的确切位置可以找到这些信息吗? -
The testing chapter 是一个相当大的赠品。
标签: java spring-boot unit-testing controller mockito