Sto provando a scrivere una specifica per qualcosa che usa il futuro, e non sono sicuro di come dovrei usare il tratto Futures
. Devo passare whenReady
a FutureConcept
, ma non riesco a trovare come dovrei costruirne uno da Future
. La documentazione si legge:passa il futuro a quandoReady fallisce
Per rendere whenReady più ampiamente applicabile, il tipo di futuro accetta è un futureconcept [T], dove T è il tipo di valore promesso dal futuro. Passare un futuro a whenReady richiede una conversione implicita dal tipo di futuro che si desidera passare (il tipo modellato) a FutureConcept [T].
Da che ho capito che devo scrivere una conversione implicita tra un Future
ed un FutureConcept
(che sembra sbagliato per me, come sembra che dovrebbe essere boilerplate, ma è l'unica cosa che posso fare di esso) . Io non riesco a capire come fare, però, la documentazione di futureconcept mi dice comodamente
vedere la documentazione per Futures tratto per i dettagli sulla sintassi questo tratto prevede per il test con il futuro.
facendomi tornare al punto di partenza. L'esempio più semplice ho cucinato up è
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 }
}
}
}
Che non può essere compilato con
- tipo non corrispondente; trovato: scala.concurrent.Future [Int] richiesto: FutureSpec.this.FutureConcept [?]
- ';' atteso ma trovato letterale intero.
cosa dovrei fare in modo diverso?
Questa risposta è assolutamente giusto, solo per aggiungere un po 'di chiarezza: Change 'con Futures' per 'con ScalaFutures' –
grazie, è meglio questo? – Martijn
Questo è perfetto. La tua risposta mi ha aiutato molto. Saluti! –