2016-04-15 3 views
1

Hier die einfache Wiedergabe Render-View-Test. In der Ansichtsvorlage versuche ich auf die Sitzungsinformationen durch flash.get() zuzugreifen. Aber der Test ist fehlgeschlagen mit der Nachricht There is no HTTP Context available from here. Wie fügen Sie gefälschte Sitzungsdaten zur getesteten Anwendung im Junit-Testkontext hinzu?play 2.5 Render View Test, Zugriff auf Flash-Nachrichten

public class ApplicationTest extends WithServer { 

private FormFactory formFactory() { 
    return app.injector().instanceOf(FormFactory.class); 
} 

@Test 
public void renderTemplate() { 
    Content html; 
    session().put("session","123"); 
    html = index.render(formFactory().form(Auth.Login.class)); 
    assertTrue(contentAsString(html).contains("Hello")); 
} 

}

Test ApplicationTest.renderTemplate failed: java.lang.RuntimeException: There is no HTTP Context available from here., took 0.544 sec 
at play.mvc.Http$Context.current(Http.java:57) 
at play.mvc.Http$Context$Implicit.flash(Http.java:307) 
at views.html.index_Scope0$index$$anonfun$apply$1.apply(index.template.scala:39) 
at views.html.index_Scope0$index$$anonfun$apply$1.apply(index.template.scala:38) 
at views.html.helper.form_Scope0$form.apply(form.template.scala:35) 
at views.html.index_Scope0$index.apply(index.template.scala:38) 
at views.html.index_Scope0$index.render(index.template.scala:141) 
at views.html.index.render(index.template.scala) 
at ApplicationTest.renderTemplate(ApplicationTest.java:37) 

Antwort

1

WithServer Mit startet eine Anwendung, die Sie Anfragen zu machen. Für die Tests, die Sie hier beschreiben, müssen Sie WithApplication verwenden.

Um einen Kontext manuell festzulegen, können Sie die Methode startPlay überschreiben.

@Override 
public void startPlay() 
{ 
    super.startPlay(); 
    Http.Context.current.set(new Http.Context(1L, 
               Mockito.mock(RequestHeader.class), 
               Mockito.mock(Http.Request.class), 
               Collections.<String, String>emptyMap(), 
               Collections.<String, String>emptyMap(), 
               Collections.<String, Object>emptyMap())); 
}