2012-03-17 1 views
5

मैं सत्र से कुछ डेटा पढ़ने वाली विधि के आसपास कुछ परीक्षण बनाने की कोशिश कर रहा हूं।परीक्षण के दौरान सत्र में मूल्य जोड़ें (FakeRequest, FakeAplication)

मैं FakeRequest का विस्तार और session मूल्य अधिभावी की कोशिश की, लेकिन मैं कह रही है कि session, जब ओवरराइड जो काम नहीं करेगा एक val हो गया है संकलन पर एक त्रुटि प्राप्त।

सत्र में मूल्य जोड़ने के लिए मैं FakeRequest() को कैसे संशोधित कर सकता हूं?

कुकी बनाएँ::

+0

क्या आपने वास्तव में स्वीकृत उत्तर से पुल अनुरोध का उपयोग करके इसे हल किया था? या आपने Play के संशोधित संस्करण का उपयोग किए बिना इसे प्राप्त करने का कोई तरीका खोजा? – Arjan

+0

@arjan hi, नहीं, मैंने इसे खींच नहीं लिया, लेकिन मुझे लगता है कि यह समाधान है। इसे जल्द ही एकीकृत करने की उम्मीद –

उत्तर

4

देखें मैं पुल अनुरोध से कुछ उदाहरण का इस्तेमाल किया नाटक का एक अद्यतन संस्करण का उपयोग किए बिना इस निर्माण करने के लिए नहीं है

val sessionCookie = Session.encodeAsCookie(Session(Map("key" -> "value"))) 

बनाएँ और निष्पादित fakeRequest:

+०१२३५१६४१०६
val Some(result) = routeAndCall(FakeRequest(GET,"/").withHeaders(play.api.http.HeaderNames.COOKIE -> Cookies.encode(Seq(sessionCookie)))) 

तो सामान बाहर निकालने के लिए मैं निम्नलिखित बनाया:

परीक्षण तरीकों की मौजूदा शैली को देखते हुए:

status(result) must equalTo(OK) 

मैंने बनाया:

def sessionCookie(result: Result): Option[Cookie] = cookies(result).get("PLAY_SESSION") 
def session(result: Result): Session = Session.decodeFromCookie(sessionCookie(result)) 

जो तुम फोन:

session(result).get("key") must be("value") 

कहना है कि यह क्रोध में परीक्षण नहीं किया गया है। लेकिन देखें कि यह मदद करता है या नहीं।

+0

यह उपयोगी था जब FakeRequest के बजाय WithServer और WS.url (...) का परीक्षण किया गया था – Khorkhe