2013-08-23 24 views
10

Tôi đang cố gắng viết thông số kỹ thuật cho một thứ gì đó bằng cách sử dụng tương lai và tôi không chắc chắn cách sử dụng đặc tính Futures. Tôi phải vượt qua whenReady một FutureConcept, nhưng tôi không thể tìm thấy cách tôi nên xây dựng một cái từ một số Future. Các tài liệu đọc:chuyển giao tương lai cho khiReady không thành công

Để làm whenReady hơn áp dụng rộng rãi, các loại tương lai nó chấp nhận là một FutureConcept [T], trong đó T là loại giá trị hứa bởi tương lai. Vượt qua tương lai khi WhenReady yêu cầu chuyển đổi tiềm ẩn từ loại tương lai bạn muốn chuyển (loại được lập mô hình) thành FutureConcept [T].

Từ đó tôi hiểu rằng tôi phải viết một chuyển đổi ngầm giữa một FutureFutureConcept (mà có vẻ không đúng với tôi, vì nó dường như nên soạn sẵn, nhưng đó là điều duy nhất tôi có thể làm cho nó) . Tôi không thể tìm ra cách để làm điều đó, mặc dù các tài liệu của FutureConcept nói với tôi handily

Xem tài liệu cho tương lai đặc điểm cho các chi tiết về cú pháp đặc điểm này cung cấp để thử nghiệm với tương lai.

làm cho tôi trở thành vòng tròn đầy đủ. Ví dụ đơn giản nhất tôi nấu chín lên là

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

Điều đó không có biên dịch với

  • loại không phù hợp; tìm thấy: scala.concurrent.Future [Int] bắt buộc: FutureSpec.this.FutureConcept [?]
  • ';' dự kiến ​​nhưng số nguyên được tìm thấy.

tôi nên làm gì khác?

Trả lời

23

Tôi đã tìm thấy chuyển đổi ẩn hiện diện trong ScalaFutures, không phải trong Futures. Tuyên bố lớp học phải là

class FutureSpec extends WordSpecLike with ScalaFutures 

Ngoài ra, còn một vài lỗi khác. FutureSpec cũng nên có Matchers trộn lẫn trong, và res => s là một typo ngớ ngẩn, và nên res => res

+1

Câu trả lời này là hoàn toàn đúng, chỉ cần thêm một chút rõ ràng: Thay đổi 'với Futures' 'với ScalaFutures' –

+0

cảm ơn bạn, tốt hơn chưa? – Martijn

+0

Điều đó thật hoàn hảo. Câu trả lời của bạn đã giúp tôi rất nhiều. Chúc mừng! –

Các vấn đề liên quan