2015-03-09 21 views
6

Tôi không thể kiểm tra nội dung trang với thử nghiệm mvc mùa xuân vì nó trống.Nội dung trống trong thử nghiệm mvc mùa xuân

Với bộ điều khiển đơn giản nhất có thể:

@RequestMapping(value = "/home") 
public String home(HttpSession session, ModelMap model) { 
    return "home"; 
} 

liên quan gạch cấu hình:

<definition name="base.definition" template="/jsp/view/application.jsp"> 
    <put-attribute name="header" value="/jsp/view/header.jsp" /> 
    <put-attribute name="menu" value="/jsp/view/menu.jsp" /> 
    <put-attribute name="title" value="" /> 
    <put-attribute name="body" value="" /> 
    <put-attribute name="footer" value="/jsp/view/footer.jsp" /> 
</definition> 
<definition name="home" extends="base.definition"> 
    <put-attribute name="title" value="Welcome" /> 
    <put-attribute name="body" value="/jsp/view/home/list-home.jsp" /> 
</definition> 

Simple list-home.jsp

<p>Welcome</p> 

Và kiểm tra:

@RunWith(SpringJUnit4ClassRunner.class) 
@WebAppConfiguration() 
@ContextConfiguration(classes = WebTestConfig.class) 
public class HomeControllerTest { 
    @Autowired 
    private WebApplicationContext wac; 
    private MockMvc mockMvc; 

    @Before 
    public void _setup() { 
    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); 
    } 

    @Test 
    public void home() throws Exception { 
    mockMvc.perform(get("/home")) 
     .andDo(print()) 
     .andExpect(status().isOk()) 
     .andExpect(forwardedUrl("/jsp/view/application.jsp")) 
     .andExpect(content().string("Welcome")); 
    } 

Và nó là không java.lang.AssertionError: Response content expected:<Welcome> but was:<>

các in ra phản ứng như sau:

MockHttpServletResponse: 
       Status = 200 
     Error message = null 
      Headers = {} 
     Content type = null 
       Body = 
     Forwarded URL = /jsp/view/application.jsp 
     Redirected URL = null 
      Cookies = [] 

Môi trường:

  • mùa xuân 3,2
  • Gạch 2
  • Java 6

Tôi đã bỏ lỡ điều gì?

NB: Mã đang hoạt động trên Tomcat với trình duyệt thực.

+1

Bạn không thể kiểm tra jsp (nội dung) bằng thử nghiệm mvc mùa xuân. Nó thậm chí còn khó hơn nếu có gạch liên quan. Tôi không tìm thấy liên kết tài liệu hoặc nguồn nhưng không thể. – meistermeier

+0

Tài liệu: http://docs.spring.io/spring-framework/docs/3.2.0.BUILD-SNAPSHOT/reference/htmlsingle/#spring-mvc-test-framework với dòng sau 'Đối với hầu hết mọi thứ, mọi thứ nên hoạt động như trong thời gian chạy với ngoại lệ hiển thị JSP, không có sẵn bên ngoài vùng chứa Servlet ' – meistermeier

+0

Vì vậy, quá trình thử nghiệm được trình bày trong http://www.infoq.com/presentations/spring-mvc-test-htmlunit không khả dụng trước mùa xuân 4.x. Tôi có đúng không? – takacsot

Trả lời

5

Bạn không thể viết xác nhận cho nội dung của trang JSP vì các trang JSP được chứa bởi thùng chứa servlet và Kiểm tra MVC Spring không chạy thùng chứa servlet. Bạn chỉ có thể xác minh rằng tên chế độ xem là chính xác và/hoặc yêu cầu được chuyển tiếp đến đúng url.

Tuy nhiên, bạn có thể viết xác nhận cho nội dung của chế độ xem nếu bạn sử dụng công nghệ chế độ xem không yêu cầu thùng chứa servlet (chẳng hạn như Velocity hoặc Thymeleaf).

Các vấn đề liên quan