6

प्रलेखन के Writing functional tests भाग बहुत खराब है और नकली रूप मानों को पूरी तरह सबमिट करने पर विवरणों की कमी है। मैं किसी भी तरह (याद नहीं कर सकते कि कैसे/जहां) निर्धारित तुम इतनी तरह FakeRequest करने के लिए एक Map पास करके बुनियादी रूप मूल्यों (एक पोस्ट अनुरोध मजाक) प्रस्तुत कर सकते हैं:प्ले फ्रेमवर्क (संस्करण 2.0, स्कैला का उपयोग करके) में अपलोड की गई फ़ाइल की अपेक्षा करने वाले कार्यों का परीक्षण कैसे करें?

val Some(result) = routeAndCall(FakeRequest(POST, "/path/to/test", FakeHeaders(), 
           Map("postedVariable" -> Seq("and a value")))) 

हालांकि, उस के लिए अनुमति देने के लिए प्रतीत नहीं होता "अपलोड की गई" फ़ाइल का मामला। आप सीमित करने के लिए BodyParsers.maxLength उपयोग कर रहे हैं

val tempFile = TemporaryFile(new java.io.File("/tmp/the.file")) 
val part = FilePart[TemporaryFile](key = "image", filename = "the.file", contentType = Some("image/jpeg"), ref = tempFile) 
val formData = MultipartFormData(dataParts = Map(), files = Seq(part), badParts = Seq(), missingFileParts = Seq()) 
val result = routeAndCall(FakeRequest(POST, "/path/to/test", FakeHeaders(), formData)) 

जहां "image" HTML प्रपत्र तत्व आप में फ़ाइल की सामग्री पाने की उम्मीद का नाम है

:

+2

साथ formData जगह ले सकता है आप यहाँ संकेत के एक जोड़े पा सकते हैं: http://stackoverflow.com/questions/10890381/test-multipartformdata-in-play-2-0-fakerequest – forker

+0

Play 2.1.x – PlexQ

उत्तर

10

हमारी फाइल अपलोड परीक्षण कुछ इस तरह दिखाई। अपलोड के आकार, आप Right(formData)

+0

के लिए यह अपडेट करने के लिए शानदार बनें, मुझे यही चाहिए! एक समस्या को छोड़कर: 'FakeRequest' का निर्माण करते समय, मुझे' राइट 'रैपर को' फ़ॉर्मडाटा 'के आसपास रखना था; इस प्रकार, अंतिम पंक्ति होनी चाहिए: 'वैल परिणाम = मार्ग औरकॉल (FakeRequest (POST,"/path/to/test ", FakeHeaders(), formData)) –

+0

और मैं यह भी ध्यान रखना चाहता हूं कि 'कुंजी' पैरामीटर 'फ़ाइलपार्ट' वह नाम होना चाहिए जो आपके HTML फॉर्म का फ़ाइल इनपुट उपयोग करता है। –

+0

क्षमा करें, 'राइट' रैपर था क्योंकि हम अपलोड के आकार को सीमित करने के लिए 'BodyParsers.maxLength' का उपयोग करते हैं। मैं अपना उदाहरण बनाते समय इसे बाहर निकालना भूल गया। –