提问者:小点点

斯卡拉莫克 3.不带参数的模拟重载方法


我找不到任何留档来解释如何模拟在calamock中不接受参数的重载方法,例如

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

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

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

但是如何模拟另一个不带参数的方法呢?感谢任何帮助。


共3个答案

匿名用户

我终于想通了:

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

这个问题对我帮助很大。如果有这样的文件记录下来,那就太好了。

匿名用户

在scala 2.12中,这也适用(Intellij无需检查):

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

匿名用户

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