Scalamock 3. Мощный перегруженный метод без параметра

Я не мог найти документацию, объясняющую, как измакать перегруженные методы, не принимающие аргументы в scalamock, например

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

Чтобы высмеять функцию, которая принимает маркер, можно просто использовать

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

Но как насмехаться над другим методом, который не принимает никаких параметров? Любая помощь приветствуется.

Ответы

Ответ 1

Я, наконец, понял:

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

Этот issue мне очень помог. Все равно было бы неплохо иметь что-то вроде этого документально.

Ответ 2

В scala 2.12 это также работает (нет инспекции для Intellij):

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

Ответ 3

Я использовал этот подход, пока не понял, что в 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