Scalamock 3. 无参模拟重载方法

Scalamock 3. Mock overloaded method without parameter

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

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

要模拟接受标记的函数,可以简单地使用

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

但是如何模拟另一个不带参数的方法呢?任何帮助表示赞赏。

我终于想通了:

(loggerMock.isInfoEnabled: () => Boolean).expects().returning(true)

这个issue对我帮助很大。仍然会很高兴有这样的记录。

我一直在使用这种方法,直到我意识到在 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

在 scala 2.12 中这也有效(不检查 Intellij):

//noinspection ConvertibleToMethodValue
(tailer.run _: () => Unit) expects()