7
Tôi muốn để có thể thử một giá trị trở lại của getOrElse
phương pháp để nó trả lại những gì được thông qua như orElse
luận gọi bằng tên với ScalaMockLàm thế nào để giả lập một đối số theo từng tên (như getOrElse) bằng cách sử dụng ScalaMock?
trait ToBeMocked {
def getOrElse(arg: Int)(orElse: => String): String
}
ScalaMock đã được sử dụng vì currying. Chạy này:
class CallByNameMockSpec extends Specification with MockFactory {
trait ToBeMocked {
def getOrElse(arg: Int)(orElse: => String): String
}
"Mocking functions with call-by-name arguments" should {
"work" in {
val m = mock[ToBeMocked]
(m.getOrElse (_: Int)(_: String)).expects(101, *).onCall((x, y) => y)
m.getOrElse(101)("result") must beEqualTo("result")
}
}
}
ném một ngoại lệ:
[error] ClassCastException:
test.service.CallByNameMockSpec$$anonfun$1$$anonfun$apply$1$$anonfun$apply$3$$anonfun$apply$4 cannot be cast to java.lang.String (CallByNameMockSpec.scala:16)