简单使用 Mockito AnyMap 不起作用
Simple use of Mockito AnyMap is not working
为什么 anyMap 在这个简单的例子中不起作用?我得到 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
class.
中的任何内容
但是 提供的 anyMap()
和 anyMapOf[K,V]
函数是 java.util.Map
的匹配器,因此不会匹配您的 func1
方法签名(除非你明确引入 java.util.Map
)期望 scala.collection.immutable.Map[Int,Int]
.
解决此问题的最简单方法似乎是使用通用 any[T]
匹配器,它非常松散,但可以满足您的需要。
不过还有更多问题 - 为什么要 spy()
使用您拥有的对象?你为什么要 return 在 func1
的模拟行为中 Map
当它 需要 一个 Map
和 return 一个 Int
?
这编译并适用于我:
import org.mockito.{Matchers, Mockito}
val mockFoo = Mockito.mock(classOf[Foo])
Mockito.when(mockFoo.func1(Matchers.any(classOf[Map[Int, Int]]))).thenReturn(1)
...
为什么 anyMap 在这个简单的例子中不起作用?我得到 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
class.
但是 提供的 anyMap()
和 anyMapOf[K,V]
函数是 java.util.Map
的匹配器,因此不会匹配您的 func1
方法签名(除非你明确引入 java.util.Map
)期望 scala.collection.immutable.Map[Int,Int]
.
解决此问题的最简单方法似乎是使用通用 any[T]
匹配器,它非常松散,但可以满足您的需要。
不过还有更多问题 - 为什么要 spy()
使用您拥有的对象?你为什么要 return 在 func1
的模拟行为中 Map
当它 需要 一个 Map
和 return 一个 Int
?
这编译并适用于我:
import org.mockito.{Matchers, Mockito}
val mockFoo = Mockito.mock(classOf[Foo])
Mockito.when(mockFoo.func1(Matchers.any(classOf[Map[Int, Int]]))).thenReturn(1)
...