8

ScalaTest でMockito のAnswerに代わるものはありますか? 私はそのドキュメントを調べていましたが、何も見つかりませんでした。

たとえば、スタブ化されたメソッドの引数に対していくつかのロジックを実行したいと思います。Mockito では、次のようにします。

when(mock.create(any(A.class))).thenAnswer(new Answer() {
    Object answer(InvocationOnMock invocation) {
        A firstArg = (A) invocation.getArguments()[0];
        firstArg.callMethod();
        return null;
    }
});

ScalaTest では、Mockito も問​​題なく使用できます。ただし、そのような を定義する Scala に適した構文があればいいのですがAnswer

ありがとうございました。

4

4 に答える 4

10

このブログ投稿を見つけました。暗黙的な変換を使用して目的を達成する方法について説明します。このような暗黙の変換を定義すると

implicit def toAnswerWithArgs[T](f: InvocationOnMock => T) = new Answer[T] {
    override def answer(i: InvocationOnMock): T = f(i)
}

thenAnswer単純な関数を引数として呼び出すことができます:

when(mock.someMethodCall()).thenAnswer((i) => calculateReturnValue())

モック化されたメソッドに引数がない場合の、わずかに短い代替バージョンもあります。詳細については、リンクをたどってください。

于 2016-10-14T13:26:03.110 に答える
2

トレイトMockitoSugarを混ぜると、モックを作成し、次の構文を使用して回答を渡すことができます。

mock[Collaborator](new Answer(){ ... })
于 2013-02-22T23:02:29.070 に答える
1

ScalaMockを試しましたか? また、ScalaTestと統合され、より Scala に適した API を提供します。

于 2013-02-22T14:39:39.657 に答える