我想使用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();
}

07-25 22:43