28

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

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

要模拟采用 Marker 的函数,可以简单地使用

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

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

4

3 回答 3

46

我终于想通了:

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

这个问题对我帮助很大。有这样的记录仍然会很好。

于 2015-12-02T11:25:04.163 回答
12

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

//noinspection ConvertibleToMethodValue
(tailer.run _: () => Unit) expects()
于 2017-12-06T12:58:23.400 回答
8

我一直在使用这种方法,直到我意识到在 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
于 2017-10-25T00:03:44.657 回答