2016-08-04 14 views
1

Ich habe eine Webanwendung, die Anmeldung erfordert. Nach erfolgreichem Login werden viele Sitzungsattribute geladen, die bei der nachfolgenden Navigation anderer Webseiten benötigt werden.Im Frühling MockMVC testet, wie man mehrere Webseiten besucht?

Ich teste diese Webanwendung mit Spring Test Framework 4.12, MockMVC verwenden.

Wie verknüpfe ich nach dem Besuch der Anmeldeseite eine Aktion mit einer zweiten Seite? Etwas wie:

mockMvc.perform(post("/login").session(session).param("username", "Jack").param("password","Jack'sPassword")) 
       .perform(get("/anotherPage")).andExpect(/*some session attribute are successfully loaded*/) 

Antwort

1

Sie andDo Methode zur Kette verwenden können Ihre Anfragen

mockMvc.perform(post("/login").session(session) 
     .param("username","Jack").param("password","Jack'sPassword")) 
     //Expectations on the first request 
     .andExpect(status().ok()) 
     //Then chain the request 
     .andDo(
      mockMvc.perform(get("/anotherPage")).andExpect(/*some session attribute are successfully loaded* 
     ) 
+0

Das ist für mich nicht funktioniert. Ich bekomme einen Typkonflikt: andDo() erwartet einen ResultHandler, während perform() einen ResultActions zurückgibt. Die einzige Möglichkeit, dies zu tun, scheint zu sein, einen benutzerdefinierten ResultHandler zu schreiben, der die verschachtelte mockMvc.perform() ausführt. – onnoweb

+0

Sie sollten nicht aufhören nach mockMvc.perform(), möglicherweise tun mockMvc.perform (... etwas ...) .undDo (print()) –