简单使用Mockito Anymap无法正常工作



为什么在这种简单情况下,任何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)
...

相关内容

  • 没有找到相关文章

最新更新