0
У меня есть метод в контроллере:Spring MVC Тесты методы MockMvc
@RequestMapping(value = "/", method = RequestMethod.GET)
public final String mainGet(final HttpServletRequest request,
final HttpServletResponse response, ModelMap model)
throws ServletException {
model.addAttribute("fontSize", fontSize);
courses = persistenceServices.getCourses();
model.addAttribute("coursesList", courses);
return "home";
}
Я написал простой тест:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:tests.xml" })
@WebAppConfiguration
public class TestHomeController {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Mock
private PersistenceServices persistenceServicesMock;
@InjectMocks
private HomeController homeController;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
this.mockMvc = MockMvcBuilders.standaloneSetup(homeController).build();
}
@Test
public void testMainGet() throws Exception {
mockMvc.perform(get("/")).andExpect(status().isOk()).andExpect(view().name("home"));
verify(persistenceServicesMock, times(1));
verifyNoMoreInteractions(persistenceServicesMock);
}
Все кажется хорошо, но я не могу назвать метод любого MvcMock в. Затмение подчеркивает все из них (выполнения, состояние, вид и т.д.) и показывает мне информацию:
The method perform(RequestBuilder) in the type MockMvc is not applicable for the arguments (MockHttpServletRequestBuilder)
Я пытался бросить аргументы RequestBuilder и ResultMatcher, но это не сработало.
Вы статическое импортирование получить статус, просматривать и т.д.? – renanlf
Да, у меня есть что-то вроде этого: import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders. *; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. *; –
Удалить декларацию wac. Поскольку вы используете автономную настройку, вам это не нужно. Кроме того, MockitoAnnotations.initMocks (это); следует вызывать после mockMVCbuilder. – renanlf