我找不到任何解释如何模拟在scalamock中不带参数的重载方法的文档,例如
public boolean isInfoEnabled(Marker marker);
public boolean isInfoEnabled();
要模拟带标记的功能,可以简单地使用
(loggerMock.isInfoEnabled(_: Marker)).expects(*).returning(true)
但是如何模拟不带参数的其他方法?任何帮助表示赞赏。
答案 0 :(得分:27)
我终于明白了:
(loggerMock.isInfoEnabled: () => Boolean).expects().returning(true)
这issue给了我很多帮助。记录这样的东西仍然会很好。
答案 1 :(得分:9)
在scala 2.12中,这也有效(不检查Intellij):
//noinspection ConvertibleToMethodValue
(tailer.run _: () => Unit) expects()
答案 2 :(得分:6)
我正在使用这种方法,直到我意识到在Scala 2.12+中这个解决方案已被弃用。
您会收到类似
的警告Eta-expansion of zero-argument method values is deprecated.
经过一番研究后,我发现了这个解决方案:
(loggerMock.isInfoEnabled _ ).expects().returning(true)
或
import scala.language.postfixOps
loggerMock.isInfoEnabled _ expects () returning true