Scalamock 3.模拟重载方法没有参数

时间:2015-12-01 22:40:50

标签: scala unit-testing scalatest scalamock

我找不到任何解释如何模拟在scalamock中不带参数的重载方法的文档,例如

public boolean isInfoEnabled(Marker marker);
public boolean isInfoEnabled();

要模拟带标记的功能,可以简单地使用

(loggerMock.isInfoEnabled(_: Marker)).expects(*).returning(true)

但是如何模拟不带参数的其他方法?任何帮助表示赞赏。

3 个答案:

答案 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