2012-04-30 16 views
7

में परीक्षण के लिए सत्र, अनुरोध और प्रतिक्रिया में हेरफेर कैसे करें हाय मेरे पास एक प्रमाणीकरण सेवा है जो अनुरोध (कुछ शीर्षलेख-डेटा और कुकी) पर प्रतिक्रिया करता है, प्रतिक्रिया (एक कुकी सेट करने या हटाने के लिए) और सत्र (स्टोर उपयोगकर्ता आईडी और याद रखें मेरी जानकारी)।प्ले 2.0

खेल 1.x में नकली अनुरोध, प्रतिक्रिया, कुकी और सत्र के लिए आसान था। इसे आसानी से Session.current().set(new Session()) के साथ सेट किया जा सकता है। प्ले 2.0 में यह अब काम नहीं करता है।

मैं अनुरोध में कुकी कैसे जोड़ सकता हूं? मैं सत्र में कैसे बदलाव कर सकता हूं? मैंने देखा कि नकली अनुप्रयोग और नकली आवश्यकता है लेकिन मुझे यह नहीं मिला, उनके साथ कैसे काम करना है।

किसी भी संकेत की सराहना की जाती है।

उत्तर

4

यह समान play1.x के लिए क्या करना संभव है। केंद्रीय बिंदु Context है। इसके अलावा आपको DummyRequest बनाना होगा जो आपको आवश्यक विधियों को लागू करता है। तो फिर यह बनाने के लिए संभव है निम्नलिखित

final Request request = new DummyRequest(); 
Context.current.set(new Context(request, new HashMap <String, String>(), 
     new HashMap <String, String>())); 
अपने परीक्षण में

आप Context.current().session(), Context.current().response() या Context.current().request() मिल सकती है।

आप यहां एक test-example देख सकते हैं।

+0

पूरे डमी अनुरोध को लागू करने के बजाय, यह शायद एक नकली पुस्तकालय का उपयोग करना आसान होगा वैसे भी 'Context.curr के लिए +1 ent.set() 'उत्तर। –

+0

हां एक नकली पुस्तकालय क्लीनर दृष्टिकोण होगा। पिछली बार निर्भरताओं के साथ कुछ परेशानी थी, इसलिए मैं अपने मैक्स मैन्युअल रूप से लिखने के लिए पूरे परीक्षण में चुनता हूं। – niels

12

यह प्ले 2.0 के लिए तैयार नहीं था, लेकिन Play 2.1 (और वर्तमान मास्टर में) में आप लिखने के लिए सक्षम हो जाएगा:

fakeRequest(GET, "/foo") 
    .withSession("bar", "baz") 
    .withCookies(cookie("bah", "toto")); 
+0

यदि मैं इसे कॉल करता हूं, तो क्या मैं इसे 'Context.current()। अनुरोध() 'के साथ प्राप्त करूंगा? यूआरएल के लिए एक रास्ता होना चाहिए? मेरा मतलब है कि FakeRequest केवल बेकार है क्योंकि यह अनुरोध का उदाहरण नहीं है :-( – niels

+0

हां, प्रत्येक यूआरएल में एक मार्ग होना चाहिए। एक क्रिया के अंदर आप [सत्र()] (http: // www का उपयोग कर वर्तमान सत्र को पुनर्प्राप्त कर सकते हैं। .playframework.org/दस्तावेज़ीकरण/एपीआई/2.0/जावा/index.html) नियंत्रक की विधि। –

+0

क्षमा करें, लेकिन मैं एक मॉड्यूल का परीक्षण करने का प्रयास करता हूं, इसलिए मेरे पास कोई मार्ग नहीं है। परीक्षण के लिए इसकी आवश्यकता नहीं है। इसके अलावा मैं अगर परीक्षण के लिए नियंत्रक बनाने की ज़रूरत नहीं है तो मुझे सराहना होगी। मैंने fakeRequest और फिर Context.current() अनुरोध() अनुरोध किया है, लेकिन एक रनटाइम अपवाद प्राप्त करें। इसलिए मुझे अभी भी समझ में नहीं आता कि fakeRequest क्या करता है। – niels

संबंधित मुद्दे