У меня есть пользовательская страница входа в систему, и для полноты картины я также хочу провести для нее тестовый модуль.У меня есть контроллер (называемый SecurityController), который имеет @GetMapping("/login")
, который добавляет объект навигации в модель.
Но следующий код завершается ошибкой с 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)
, чтобы указать пружине использовать этот контроллер?Есть ли простой способ использовать мой контроллер в этом тесте или мне нужно его переименовать?