我有一个自定义登录页面,出于完整性考虑,我还希望对其进行单元测试。我有一个具有@GetMapping("/login")
的Controller(称为SecurityController),它将向模型添加导航对象。
但是以下代码在NPE上失败,因为改为使用默认登录页面(我在控制台中看到它),因此我的模型为null:
@RunWith(SpringRunner.class)
@WebMvcTest(SecurityController.class)
@SuppressWarnings("unchecked")
public class SecurityControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void testLogin() {
try {
Map<String, Object> model = mockMvc.perform(get("/login").with(user(TestConstants.USER_WRAPPER))).andReturn().getModelAndView().getModel();
List<Navigation> navigation = (List<Navigation>) model.get("navigation");
Navigation login = navigation.get(0);
assertEquals("/app/login", login.getPath());
assertEquals("Login", login.getLabel());
assertTrue(login.isActive());
} catch (Exception e) {
fail();
}
}
}
@WebMvcTest(SecurityController.class)
不足以告诉spring使用此控制器吗?有没有一种简便的方法可以在此测试中使用我的控制器,或者我需要重命名它?