1

我想使用 Play 2.1.1 驱动单元测试,这取决于用户登录或通过 API 密钥进行身份验证。我想做这样的事情:

/**
 * Login a user by app, email and password.
 */
@Before
public void setSession() {
    session("app", "app")
    session("user", "user0@company.co")
    session("user_role", "user");
}

有人可以告诉我正确的方法还是有另一种方法可以让我将登录功能与单个单元测试分开?提前致谢!

4

1 回答 1

2

由于在 Playframework 中,没有像 Servlet API 中那样的服务器端会话(Playframework 使用 cookie),因此您必须为每个请求模拟会话。

您可以尝试使用FakeRequest.withSession()

private FakeRequest fakeRequestWithSession(String method, String uri) {
    return play.test.Helpers.fakeRequest(method, uri).withSession("app", "app").withSession("user", "user0@company.co").withSession("user_role", "user");
}

@Test
public void badRoute() {
  Result result = routeAndCall(fakeRequestWithSession(GET, "/xx/Kiki"));
  assertThat(result).isNull();
}
于 2013-07-06T13:01:50.923 回答