Ответ 1
Я, наконец, понял:
(loggerMock.isInfoEnabled: () => Boolean).expects().returning(true)
Этот issue мне очень помог. Все равно было бы неплохо иметь что-то вроде этого документально.
Я не мог найти документацию, объясняющую, как измакать перегруженные методы, не принимающие аргументы в 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 это также работает (нет инспекции для 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