我试图验证记录器是否被调用。问题是它返回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)
答案 0 :(得分:0)
似乎问题是记录器接受一个名为call-by-name的String。根据{{3}},解决方案相当丑陋。不幸的是,Mockito不能嘲笑Strings。所以另一个解决方案是使用specs2,其中已修复Mockito以正确匹配逐个名称的参数。