2017-05-03 27 views
1

この単純なケースでは、なぜanyMapはここで動作しませんか?私はfunc1がこの署名と一致することはできませんか?私は関数func1を得るMockito AnyMapの単純な使用は機能していません

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())} 

は、この署名

答えて

1

免責事項と認識することはできません。私はScalaTestを使用しませんが、Mockitoの機能はそのまま提供されているように見えるので、Matchersクラスから何かを使用できるはずです。

しかし提供anyMap()anyMapOf[K,V]機能がjava.util.Mapためマッチャーあるので、(明示的java.util.Mapに持ってきた場合を除く)scala.collection.immutable.Map[Int,Int]を期待して、あなたのfunc1メソッドのシグネチャと一致しなくなります。

これを回避する最も簡単な方法は、一般的なany[T]マッチャーを使用しているように見えますが、これは非常に緩やかですが、必要な処理は行います。

あなたが所有しているオブジェクトにspy()さんを投稿している理由は何ですか?それMapを取り、Intを返したときに、なぜあなたはfunc1のためのあなたの嘲笑行動のリターンMapしようとしていますか?

これは、コンパイルして、私の作品:

オブジェクトをスパイ
import org.mockito.{Matchers, Mockito} 

val mockFoo = Mockito.mock(classOf[Foo]) 

Mockito.when(mockFoo.func1(Matchers.any(classOf[Map[Int, Int]]))).thenReturn(1) 

... 
+0

。議論の余地がありますが、私は部分的なモックがそのユースケースを持っていると思います。私の場合は:外部の[型を制御しない]と呼んでいます。正しいパラメータを渡しているかどうかを知りたいです。 Map =>を返すために、 – user7938511

+0

を修正しました。また、スパイのために、MockitoはdoReturn(n).when(mockfoo).func1(MatChers.any(classOf [Map [Int、Int]]))) "when..doReturn" – user7938511

関連する問題