Play framework 2.2.1:为测试创建Http.Context [英] Play framework 2.2.1: Create Http.Context for tests
问题描述
我一直在尝试使用其构造函数为测试创建一个Http.Context失败。有没有人看到我做错了什么?
I've been trying to create an Http.Context for tests using its constructor unsuccessfully. Does anybody see what I'm doing wrong?
我看过以下内容但它只适用于Play 2.0:
I've looked at the following but it only applies to Play 2.0:
Play framework 2.0:将值存储在Http中。上下文
看起来类更改为2.2.1并且它有更多参数用于构造函数,如下所示:
It looks like the class changed for 2.2.1 and it has more parameters for the constructor as shown here:
这是我的代码:
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);
}
}
这是我在运行时看到的错误测试:
This is the error that I'm seeing when running a test:
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
有任何想法吗?
如果我没有创建上下文,我得到:
If I don't create a context I get:
[error]测试TemplateTests.renderTemplate失败:java.lang。 RuntimeException:此处没有可用的HTTP上下文。
推荐答案
看起来这似乎已修复对我来说:
Looks like this seems to have fixed it for me:
@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 = new Http.Context(id, header, request, flashData, flashData, argData);
Http.Context.current.set(context);
}
具体修复它的部分是:
Http.Context.current.set(context);
这篇关于Play framework 2.2.1:为测试创建Http.Context的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!