2014-01-31 3 views
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, но это не сработало.

+0

Вы статическое импортирование получить статус, просматривать и т.д.? – renanlf

+0

Да, у меня есть что-то вроде этого: import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders. *; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. *; –

+1

Удалить декларацию wac. Поскольку вы используете автономную настройку, вам это не нужно. Кроме того, MockitoAnnotations.initMocks (это); следует вызывать после mockMVCbuilder. – renanlf

ответ

1

пытается поставить

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; 
Смежные вопросы