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()
我找不到任何说明如何在 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()