2013-08-23 16 views
10

Próbuję napisać specyfikację dla czegoś z wykorzystaniem kontraktów terminowych, i nie jestem pewien, jak mam korzystać z cechy Futures. Muszę przekazać whenReady a FutureConcept, ale nie mogę znaleźć, jak powinienem zbudować jeden z Future. Dokumentacja brzmi:przekazywanie kontraktów futures na czas, gdy Ready kończy się niepowodzeniem

Aby whenReady szerzej stosowane, rodzaj przyszłości akceptuje to FutureConcept [T], gdzie T jest typem wartości obiecał o przyszłości. Przekazywanie przyszłości, gdy firma Ready wymaga niejawnej konwersji z rodzaju przyszłości, którą chcesz przekazać (modelowany) na FutureConcept [T].

Z tego rozumiem, że muszę napisać niejawna konwersja między Future i FutureConcept (co wydaje się niewłaściwy do mnie, wydaje się, że powinno być boilerplate, ale to jedyne co mogę zrobić z nim) . Nie mogę dowiedzieć się, jak to zrobić, choć dokumentacja FutureConcept mówi mi dłoń

Zobacz dokumentację dla kontraktów cecha dla Szczegółowe informacje o składni ta cecha stanowi dla testów z przyszłości.

doprowadzając mnie do pełnego krąg. Najprostszym przykładem I ugotował jest

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 } 
    } 
    } 
} 

To nie skompilować z

  • typu niedopasowania; znaleziono: scala.concurrent.Future [Int] required: FutureSpec.this.FutureConcept [?]
  • ';' spodziewany, ale całkowity literał znaleziony.

co powinienem robić inaczej?

Odpowiedz

23

Znalazłem niejawne konwersje, które mają być obecne w ScalaFutures, a nie w Futures. Deklaracja klasy powinna być

class FutureSpec extends WordSpecLike with ScalaFutures 

Poza tym jest kilka innych błędów. FutureSpec powinny również mieć Matchers miesza się i res => s jest głupie literówka i powinno być res => res

+1

Ta odpowiedź jest absolutnie w porządku, po prostu dodać trochę jasności: zmiana „futures” na „z ScalaFutures” –

+0

dziękuję czy to jest lepsze? – Martijn

+0

To jest idealne. Twoja odpowiedź bardzo mi pomogła. Twoje zdrowie! –

Powiązane problemy