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