[英]Is it possible to mock Scala methods with view bounds with Mockito and Specs2?
[英]How to mock function returning AnyVal with Mockito in Scala / Specs2?
我想在Scala中使用Mockito(確切地說是Specs2)來存儲返回AnyVal的函數,但是它不會工作:
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
}
}
}
}
這失敗了:
V cannot be returned by f()
f() should return String
我使用標記接口/特征找到了一種解決方法(基於我在上面提供的代碼片段): https : //gist.github.com/mtgto/9251779
但這對我來說不是任何解決方案,因此它會更改返回類型(因為模擬/測試庫問題)。
以前任何人都看過這個並且知道如何存根這樣的功能?
我發現了一種簡化此功能的方法 - 使用原始的Mockito的doReturn與底層AnyVal的類型(在本例中為String)而不是AnyVal本身,所以:
org.mockito.Mockito.doReturn("hoge").when(a).f
代替:
a.f returns new V("hoge")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.