2013-07-05 56 views
1

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

有人能指出我正確的方式或者是有其他的做法,讓我來分隔單一的單元測試的登錄功能?提前致謝!

回答

2

由於在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(); 
} 
+0

謝謝,尼科! routeAndCall似乎不贊成,我只得到一個Promise作爲結果。 Play 2.1.1還有什麼需要注意的嗎? – Steven