0

ロガーが呼び出されることを確認しようとしています。問題は void を返すことです。そのため、スタブの代わりにスパイを使用することをお勧めします。残念ながら、スパイはおかしな動作をしています (機能していません)。理想的には、「msg」も削除してマッチャーを使用したいと思います。

コードは以下です。https://stackoverflow.com/a/24150445/555493で指定されたアプローチも試しましたが、それでも同様のエラーが発生します。

//setup spy
val logger = spy(new Logger)
logger.debug(msg)

//call code

//verify
there was one(logger).debug(msg)

次のエラーが表示されます。

The mock was not called as expected: 
Argument(s) are different! Wanted:
logger.debug(
 ($anonfun$apply$mcV$sp$1) <function0>
);
-> at HttpHealthCheckSpec$$anonfun$35$$anon$11$$anonfun$11.apply$mcV$sp(HttpHealthCheckSpec.scala:176)
Actual invocation has different arguments:
logger.debug(
 ($anonfun$setupMock$1) <function0>
);
-> at HttpHealthCheckSpec.setupMock(HttpHealthCheckSpec.scala:58)
4

1 に答える 1

0

問題は、ロガーが名前による呼び出し引数である文字列を受け入れることであるようです。https://stackoverflow.com/a/2158709/555493によると、ソリューションはかなり醜いです。残念ながら、Mockito は文字列をモックできません。したがって、別の解決策は、名前による呼び出し引数に正しく一致するように Mockito が修正されている specs2 を使用することです。

于 2015-03-09T18:49:37.083 に答える