Tôi muốn còn sơ khai một hàm trả về AnyVal sử dụng Mockito trong Scala (Specs2 để được chính xác), nhưng nó không đường may để làm việc:Làm thế nào để mô phỏng chức năng trả về AnyVal với Mockito trong Scala/Specs2?
import org.specs2.mutable._
import org.specs2.mock._
case class V(s: String) extends AnyVal
class A {
def f: V = new V("Hello")
}
class Sample extends Specification with Mockito {
"Mockito" should {
"mock A" in {
val a = mock[A]
a.f returns new V("hoge")
a.f match {
case V("hoge") => success
case _ => failure
}
}
}
}
này không thành công với:
V cannot be returned by f()
f() should return String
tôi tìm thấy loại giải pháp thay thế (dựa trên đó tôi đã cung cấp đoạn mã trên) bằng cách sử dụng giao diện điểm đánh dấu/đặc điểm: https://gist.github.com/mtgto/9251779
nhưng đây không phải là giải pháp cho tôi, do đó nó thay đổi kiểu trả về (do mocking/test vấn đề thư viện).
Bất kỳ ai đã thấy điều này trước đây và biết cách khai thác chức năng như vậy?
Tôi đã thử một vài điều và tôi không nghĩ rằng có một cách tốt hơn là những gì bạn đang làm. 'doReturn' không được gõ vào trong khi' returns' là vì vậy đây là lý do tại sao nó hoạt động. Một vấn đề nữa trong tương tác Scala/Java. vấn đề cuốn sách tôi đoán. – Eric