簡體   English   中英

如何測試Spring MVC控制器

[英]How to test a spring mvc controller

我有以下控制器:

@Controller
public class HomeController {
    @Resource(name="returnGraph")
    Graph returnGraph;

    @RequestMapping("/")
    public String goToHomePage(HttpSession session){
        session.setAttribute("sm", returnGraph.getVertexes());
        return "home";
    }
}

我嘗試了以下j單元測試,但沒有成功:

public class HomeControllerTest {

    @Mock
    Graph returnGraph;
    @Mock
    Map<String,Vertex> vertexes;
    @Mock
    HttpSession session;

    HomeController homeController;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        homeController = new HomeController();
    }

    @Test
    public void testgoToHomePage(){
        when(returnGraph.getVertexes()).thenReturn(vertexes);
        assertEquals("home", homeController.goToHomePage(session));
    }
}

它說我有空指針異常。

session.setAttribute("sm", returnGraph.getVertexes());

但是我不確定為什么? 我不確定對此我還能做些什么,如何確切地處理session.setAttribute。

您可以嘗試Spring MVC測試框架,這是文檔資料:

http://docs.spring.io/spring-framework/docs/3.2.0.BUILD-SNAPSHOT/reference/htmlsingle/#spring-mvc-test-framework

您可以這樣測試您的控制器:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public abstract class HomeControllerTest {

    @Autowired
    protected WebApplicationContext context;

    @Resource(name="returnGraph")
    Graph returnGraph;

    protected MockMvc mockMvc;

    @Test
    public void testgoToHomePage(){
        this.mockMvc.perform(get("/")
           .andExpect(status().isOk())
           .andExpect(content().string("home"));
    }

}
@RunWith(SpringJUnit4ClassRunner.class)
public class HomeControllerTest {

@Mock
Graph returnGraph;

@Mock
Map<String,Vertex> vertexes;

@Mock
HttpSession session;

@InjectMocks
HomeController homeController;

@Before
public void setUp() {
    MockitoAnnotations.initMocks(this);


}

@Test
public void testgoToHomePage(){
    when(returnGraph.getVertexes()).thenReturn(vertexes);
    assertEquals("home", homeController.goToHomePage(session));
}

}

您必須使用以下注釋: @RunWith(SpringJUnit4ClassRunner.class)@WebAppConfiguration

如果使用JavaConfig: @ContextConfiguration(classes = MyWebConfig.class)

一個完整的工作示例: http : //www.logicbig.com/tutorials/spring-framework/spring-web-mvc/spring-mvc-unit-testing/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM