Ich habe versucht, einen Http.Context für Tests zu erstellen, die seinen Konstruktor nicht erfolgreich verwenden. Sieht jemand, was ich falsch mache?play framework 2.2.1: Http.Context für Tests erstellen
Ich habe am folgenden aussehen, aber es gilt nur 2,0 bis Spiele:
Play framework 2.0: Store values in Http.Context
Es sieht aus wie die Klasse für 2.2.1 geändert und es mehr Parameter für den Konstruktor hat, wie hier gezeigt:
Das ist mein Code:
import java.util.Map;
import java.util.Collections;
import org.junit.*;
import static org.mockito.Mockito.*;
import play.mvc.*;
import play.test.*;
import play.mvc.Http;
import play.mvc.Http.Context;
import play.api.mvc.RequestHeader;
import static play.test.Helpers.*;
import static org.fest.assertions.Assertions.*;
public class TemplateTests {
public static FakeApplication app;
private final Http.Request request = mock(Http.Request.class);
@BeforeClass
public static void startApp() {
app = Helpers.fakeApplication();
Helpers.start(app);
}
@Before
public void setUp() throws Exception {
Map<String, String> flashData = Collections.emptyMap();
Map<String, Object> argData = Collections.emptyMap();
Long id = 2L;
play.api.mvc.RequestHeader header = mock(play.api.mvc.RequestHeader.class);
Http.Context context = mock(Http.Context(id, header, request , flashData, flashData, argData));
Http.Context.current.set(context);
}
@Test
public void renderTemplate() {
Content html = views.html.index.render();
assertThat(contentType(html)).isEqualTo("text/html");
assertThat(contentAsString(html)).contains("myindex");
}
@AfterClass
public static void stopApp() {
Helpers.stop(app);
}
}
Dies ist der Fehler, den ich sehen werde, wenn ein Test ausgeführt wird:
play test
[info] Loading project definition from /home/user/solr-segmentexplorer/explorer/project
[info] Set current project to explorer (in build file:/home/user/solr-segmentexplorer/explorer/)
[info] Compiling 1 Java source to /home/user/solr-segmentexplorer/explorer/target/scala-2.10/test-classes...
[error] /home/user/solr-segmentexplorer/explorer/test/TemplateTests.java:33: cannot find symbol
[error] symbol : method Context(java.lang.Long,play.api.mvc.RequestHeader,play.mvc.Http.Request,java.util.Map<java.lang.String,java.lang.String>,java.util.Map<java.lang.String,java.lang.String>,java.util.Map<java.lang.String,java.lang.Object>)
[error] location: class play.mvc.Http
[error] Http.Context context = mock(Http.Context(id, header, request , flashData, flashData, argData));
[error] ^
[error] 1 error
[error] (test:compile) javac returned nonzero exit code
[error] Total time: 3 s, completed Nov 25, 2013 11:56:36 PM
Irgendwelche Ideen?
Wenn ich nicht einen Kontext schaffen erhalte ich:
[error] Test TemplateTests.renderTemplate failed: java.lang.RuntimeException: There is no HTTP Context available from here.
Können Sie näher erläutern, was genau es behoben hat? – Jus12
Der Teil 'Http.Context.current.set (context);' – joerx
Siehe @ Rozuurs Antwort. – PapaSierra