2013-08-23 30 views
10

मैं वायदा का उपयोग करके कुछ के लिए एक स्पेक लिखने की कोशिश कर रहा हूं, और मुझे यकीन नहीं है कि मुझे Futures विशेषता का उपयोग कैसे करना है। मुझे whenReadyFutureConcept पास करना होगा, लेकिन मुझे नहीं पता कि मुझे Future से एक कैसे बनाना चाहिए। प्रलेखन पढ़ता है:जब रीडी विफल रहता है

whenReady अधिक मोटे तौर पर लागू करने के लिए, भविष्य के प्रकार यह स्वीकार करता है एक FutureConcept [टी], जहां टी मूल्य के प्रकार के भविष्य से का वादा किया है। जब भविष्य में आप भविष्य के प्रकार (मॉडल प्रकार) को फ्यूचर कॉन्सेप्ट [टी] में पास करना चाहते हैं, तो भविष्य में एक भविष्य को पास करने के लिए रूपांतरण की आवश्यकता होती है।

से

कि मैं समझता हूँ कि मैं एक Future और एक FutureConcept के बीच एक अंतर्निहित रूपांतरण लिखने के लिए है (जो मेरे लिए गलत लगता है, के रूप में ऐसा लगता है कि बॉयलरप्लेट होना चाहिए, लेकिन यह केवल एक चीज मैं इसके बारे में बना सकते हैं) । मैं कैसे है कि हालांकि, FutureConcept के प्रलेखन मुझसे कहता है handily

वाक्य रचना इस विशेषता वायदा के साथ परीक्षण के लिए प्रदान करता है पर जानकारी के लिए विशेषता फ्यूचर्स के लिए दस्तावेज़ देखें करने के लिए को समझ नहीं सकता।

मुझे पूर्ण सर्कल बनाने के लिए। सबसे सरल उदाहरण मैं पकाया

import scala.concurrent._ 
import scala.concurrent.ExecutionContext.Implicits.global 

import org.scalatest.WordSpecLike 
import org.scalatest.concurrent._ 

class FutureSpec extends WordSpecLike with Futures { 
    "A future" must { 
    "be a valid argument for whenReady" in { 
     val fut = future { 42 } 
     whenReady(fut) { res => s should be 42 } 
    } 
    } 
} 

कि

  • प्रकार मेल नहीं खाता के साथ संकलन नहीं करता है; मिला: scala.concurrent.Future [Int] आवश्यक: FutureSpec.this.FutureConcept [?]
  • ';' अपेक्षित लेकिन पूर्णांक अक्षर मिला।

मुझे अलग-अलग क्या करना चाहिए?

उत्तर

23

मुझे ScalaFutures में मौजूद होने वाले अंतर्निहित रूपांतरण मिलते हैं, Futures में नहीं। कक्षा घोषणा

class FutureSpec extends WordSpecLike with ScalaFutures 

इसके अलावा, कुछ अन्य त्रुटियां भी होनी चाहिए। FutureSpec भी Matchers में मिश्रित करना चाहिए था, और res => s एक मूर्खतापूर्ण गलती है तो और res => res

+1

इस उत्तर बिल्कुल सही, बस की स्पष्टता थोड़ा जोड़ने के लिए है होना चाहिए: 'फ्यूचर्स के साथ' परिवर्तन के लिए –

+0

'ScalaFutures साथ' धन्यवाद, क्या यह बेहतर है? – Martijn

+0

यह सही है। आपके जवाब ने मुझे बहुत मदद की। चीयर्स! –

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