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

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

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
Другие вопросы по тегам