为什么在这种简单情况下,任何amap在这里不起作用?我得到的func1不能与此签名相匹配?
case class foo() {def func1 (m: Map[Int, Int]) = m.size }
case class SomeTest extends SomeSpec MockitoSugar with MustMatchers {
it("checks size ") { fixture =>
val spyfoo = spy(foo())
doReturn(5).when(spyfoo).func1(anyMap())}
我获得func1无法通过此签名
免责声明;我不使用scalatest,但是由于提供了Mockito功能,因此您应该能够使用Matchers
类中的任何内容。
但是,提供的anyMap()
和anyMapOf[K,V]
功能是java.util.Map
的匹配器,因此与您的func1
方法签名不匹配,除非您明确提出java.util.Map
(期望scala.collection.immutable.Map[Int,Int]
。
最简单的方法似乎是在使用通用的any[T]
匹配器,该匹配器非常松散,但要做您需要的。
不过还有更多问题 - 为什么在拥有的对象上 spy()
?为什么您要尝试返回 func1
中的 CC_11 a Map
并返回 Int
?
这为我编译并为我工作:
import org.mockito.{Matchers, Mockito}
val mockFoo = Mockito.mock(classOf[Foo])
Mockito.when(mockFoo.func1(Matchers.any(classOf[Map[Int, Int]]))).thenReturn(1)
...