我想使用Play 2.1.1进行单元测试,这取决于用户已登录或通过API密钥进行身份验证。我想做这样的事情:
/**
* Login a user by app, email and password.
*/
@Before
public void setSession() {
session("app", "app")
session("user", "[email protected]")
session("user_role", "user");
}
有人可以为我指出正确的方法吗,或者还有另一种方法可以让我将登录功能与单个单元测试分开?提前致谢!
最佳答案
由于在Playframework中没有像Servlet API(Playframework uses cookies)中那样的服务器端会话,因此您必须为每个请求模拟会话。
您可以尝试使用FakeRequest.withSession():
private FakeRequest fakeRequestWithSession(String method, String uri) {
return play.test.Helpers.fakeRequest(method, uri).withSession("app", "app").withSession("user", "[email protected]").withSession("user_role", "user");
}
@Test
public void badRoute() {
Result result = routeAndCall(fakeRequestWithSession(GET, "/xx/Kiki"));
assertThat(result).isNull();
}