2013-08-23 86 views
10

我正在嘗試使用期貨編寫規範,我不知道我應該如何使用Futures特質。我必須通過whenReady a FutureConcept,但我無法找到如何從Future構建一個。文檔讀取:將期貨傳遞給whenReady失敗

爲了使whenReady更廣泛地應用於,它 接受未來的類型是一個FutureConcept [T],其中T是值的類型由所述將來答應 。將未來傳遞給whenReady時,需要將您希望傳遞的未來類型(建模類型) 轉換爲FutureConcept [T]的隱式 。

,從我明白,我必須寫一個FutureFutureConcept之間的隱式轉換(這似乎我錯了,因爲它似乎應該是樣板,但它是我可以做它的唯一的事情) 。我無法弄清楚如何做到這一點,雖然,FutureConcept的文檔告訴我輕而易舉地

見的細節特徵期貨對文檔的語法 這個特質提供了與期貨測試。

讓我走完整圈。我做了最簡單的例子是

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] required:FutureSpec.this.FutureConcept [?]
  • ';'預期但發現整數字面值。

我應該做什麼不同?

回答

23

我發現隱式轉換存在於ScalaFutures,而不是在Futures。類聲明應該是

class FutureSpec extends WordSpecLike with ScalaFutures 

除此之外,還有其他一些錯誤。 FutureSpec也應該有Matchers混合,並res => s是一個愚蠢的筆誤,應該是res => res

+1

這個答案是絕對正確的,只是爲了增加一點透明度:改變「與期貨」的「與ScalaFutures」 –

+0

謝謝,這是否更好? – Martijn

+0

這很完美。你的回答幫了我很多。乾杯! –

相關問題