2012-03-06 53 views
3

我目前正在使用ScalaTest框架和ScalatraSuite類編寫一些Scalatra測試。從ScalatraTest-ScalaTest獲取會話價值

test("when i try to go to the base url it shold redirect me "){ 
    get("/") { 
     status should be(302) 
    } 
    } 

下一步需要我檢查一些會話值的存在,但不清楚如何做到這一點?任何人都可以建議嗎?爲了測試的目的,我創建了一個SessionAccess特性,它用一個可訪問的HashMap來重載商店會話的簡單特性,但我確定有一種更簡單的方法?

回答

2

我看了一下ScalatraSuite的代碼,它看起來像沒有辦法檢索會話對象本身。但是,您可以在會話中執行多個調用以檢查預期的行爲。

如果你有這些調用:

post("/start") { 
    session("foo") = params("foo") 
    // ... 
} 

get("/do_something") { 
    session.get("foo") 
} 

,你可以這樣測試:

test("Whatever inside of a session") { 
    session { 
    post("/start", "foo" -> "bar") { 
     // assert... 
    } 
    get("/do_something") { 
     body should equal ("bar") 
    } 
    } 
} 

希望有所幫助。

+0

那就是我的想法。感謝您的確認。 – 2012-03-06 15:23:29