2017-10-26 1 views
0

정의되지 않는다 :MockMvc 시험 : 모델()와 hasItem() 메소드 내 컨트롤러와 사용을 테스트하기 위해 다음과 같은 테스트 할

package spittr.web; 

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; 
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup; 

import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 

import org.junit.Test; 
import org.mockito.Mockito; 
import org.springframework.test.web.servlet.MockMvc; 
import org.springframework.web.servlet.view.InternalResourceView; 

import spittr.data.Spittle; 
import spittr.data.SpittleRepository; 

public class SpittleControllerTest { 
    @Test 
    public void shouldShowRecentSpittles() throws Exception { 
     List<Spittle> expectedSpittles = createSpittleList(20); 
     SpittleRepository mockRepository = Mockito.mock(SpittleRepository.class); 

     Mockito.when(mockRepository.findSpittles(Long.MAX_VALUE, 20)) 
      .thenReturn(expectedSpittles); 

     SpittleController controller = new SpittleController(mockRepository); 

     MockMvc mockMvc = standaloneSetup(controller) 
      .setSingleView(
       new InternalResourceView("/WEB-INF/views/spittles.jsp")) 
      .build(); 

     mockMvc.perform(get("/spittles")) 
      .andExpect(view().name("spittles")) 
      .andExpect(model().attributeExists("spittleList")) 
      .andExpect(model().attribute("spittleList", hasItems(expectedSpittles.toArray()))); 
    } 

    private List<Spittle> createSpittleList(int count) { 
     List<Spittle> spittles = new ArrayList<Spittle>(); 

     for (int i=0; i < count; i++) { 
      spittles.add(new Spittle("Spittle " + i, new Date())); 
     } 

     return spittles; 
    } 
} 

을하지만 컴파일러는 모델() 방법 을 이해할 수 없다 assert 섹션의 hasItem() 메소드,이 파일로 가져올 패키지 또는 .jar 파일은 무엇입니까?

답변

2

model()org.springframework.test.web.servlet.result.MockMvcResultMatchers

view()에 고정 방법도 org.springframework:spring-test 의해 제공 org.springframework.test.web.servlet.result.MockMvcResultMatchers

그리고 org.springframework.test.web.servlet.result.MockMvcResultMatchers에 고정 방법.

클래스 패스에이 파일이있는 것으로 의심됩니다. 그렇지 않으면 MockMvc에 대한 참조가 컴파일되지 않습니다.

내가 겪고있는 문제는 hasItems()이며, 이는 org.hamcrest.Matchers에서 비롯된 것 같습니다. 이 종속성에 대한 Maven 좌표는 다음과 같습니다.

<dependency> 
    <groupId>org.hamcrest</groupId> 
    <artifactId>hamcrest-library</artifactId> 
    <version>1.3</version> 
    <scope>test</scope> 
</dependency> 
관련 문제