如何使用MockMvc测试spring控制器方法?

我正在使用spring 3.2.0和junit 4

这是我需要测试的控制器方法

@RequestMapping(value="Home")

public ModelAndView returnHome(){

return new ModelAndView("Home");

}

spring-servlet config is:

<context:annotation-config/>

<context:component-scan base-package="com.spring.poc" />

<mvc:annotation-driven />

<bean id="jspViewResolver"

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="viewClass"

value="org.springframework.web.servlet.view.JstlView" />

<property name="prefix" value="/WEB-INF/jsp/" />

<property name="suffix" value=".jsp" />

This is my test class :

public class TestController {

private MockMvc mockMvc;

@Before

public void setup() {

InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();

viewResolver.setPrefix("/WEB-INF/");

viewResolver.setSuffix(".jsp");

this.mockMvc = standaloneSetup(new CController()).setViewResolvers(

viewResolver).build();

}

@Test

public void CControllerTest() throws Exception {

......

......

}

}

如何使用MockMvc测试此方法?

回答:

你可以使用以下注释来使用应用程序调度程序servlet xml。以下示例使用路径/ mysessiontest设置了一些会话属性并期望返回某个视图来命中控制器:

import org.junit.Before;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.http.MediaType;

import org.springframework.mock.web.MockHttpServletRequest;

import org.springframework.mock.web.MockHttpSession;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.springframework.test.context.web.WebAppConfiguration;

import org.springframework.test.web.servlet.MockMvc;

import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import org.springframework.web.context.WebApplicationContext;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@RunWith(SpringJUnit4ClassRunner.class)

@WebAppConfiguration

@ContextConfiguration({ "classpath:springDispatcher-servlet.xml" })

public class MySessionControllerTest {

@Autowired WebApplicationContext wac;

@Autowired MockHttpSession session;

@Autowired MockHttpServletRequest request;

private MockMvc mockMvc;

@Before

public void setup() {

this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();

}

@Test

public void getAccount() throws Exception {

UserDomain user = new UserDomain();

user.setFirstName("johnny");

session.setAttribute("sessionParm",user);

this.mockMvc.perform(get("/mysessiontest").session(session)

.accept(MediaType.TEXT_HTML))

.andExpect(status().isOk())

.andExpect(view().name("test"));

}

}

以上是 如何使用MockMvc测试spring控制器方法? 的全部内容, 来源链接: utcz.com/qa/417423.html

回到顶部