springmvc mock 유닛 테스트

4010 단어 spring
웹 프로젝트 가 유닛 테스트 를 할 때 일반적인 방법 은 프로젝트 를 웹 용기 에 배치 하고 HttpClient 나 브 라 우 저 를 통 해 특정한 기능 을 테스트 하 는 것 으로 효율 이 매우 낮다.다음은 spring test 가 제공 하 는 mock 테스트 기능 을 소개 합 니 다. 웹 프로젝트 의 유닛 테스트 를 편리 하 게 완성 할 수 있 습 니 다.* 8195: 8195: 먼저 테스트 부 류 를 쓰 고 다른 테스트 류 는 이 부 류 를 계승 하면 됩 니 다.메모: 필터 필 터 를 인 코딩 으로 추가 할 수 있 습 니 다. 아래 예제 코드 에 SsoFilter 차단 기 를 추가 하 였 습 니 다.
/**
 *   mock  web  
 * @author huangxf
 * @date 2017 4 12 
 */
@WebAppConfiguration(value="src/main/webapp")
@ContextConfiguration( locations={"classpath*:spring-config/core/application-*.xml", 
        "classpath*:spring-config/core/springmvc-servlet.xml"} )
@RunWith( SpringJUnit4ClassRunner.class )
public class BaseControllerTest extends AbstractJUnit4SpringContextTests {
    @Resource
    protected WebApplicationContext wac;

    protected MockMvc mockMvc;

    @Before
    public void beforeTest() {
        Filter ssoFilter = new SsoFilter();
        mockMvc = MockMvcBuilders.webAppContextSetup( wac ).addFilters( ssoFilter ).build();
    }

}

XXXTest 를 작성 하여 BaseController Test 를 계승 하고 부모 클래스 가 제공 하 는 mockMvc 를 사용 하여 요청 합 니 다.
/**
*   mock PaymentController      
* @author huangxf
* @date 2017 4 12 
*/
public class PaymentControllerTest extends BaseControllerTest {

    private Logger logger = LoggerFactory.getLogger( this.getClass() );

    @Test
    public void testQueryPayModes() throws Exception {
        String json = "{data:{\"partnerId\":\"10000\",\"accessMode\":\"H5\"}}";
        MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.
                post("/pay/getPayModeList").contentType( MediaType.APPLICATION_JSON_UTF8 )
                .accept( MediaType.APPLICATION_JSON_UTF8 );
        requestBuilder.content( json );

        //  
        MvcResult result = mockMvc.perform( requestBuilder )
                .andDo( MockMvcResultHandlers.print() )
                .andReturn();

        //      
        String response = result.getResponse().getContentAsString();

        logger.info( "====Response====
{}"
, response ); // PaymentResponse> resp = JsonUtils.toBean( response, new TypeReference>>(){} ); assertEquals( resp.getRetCode(), "000000" ); } }

좋은 웹페이지 즐겨찾기