Scalamock 3. Макет перегруженного метода без параметров

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

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

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

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

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


person user2715478    schedule 01.12.2015    source источник


Ответы (3)


Я наконец-то понял:

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

Эта проблема мне очень помогла. Тем не менее, было бы неплохо, чтобы что-то подобное было задокументировано.

person user2715478    schedule 02.12.2015
comment
Это обязательно должно быть задокументировано. Я потратил около часа на его поиски. Я рассматриваю возможность отправки запроса на извлечение в документации. - person emptyflash; 22.04.2016
comment
Большая помощь. Повезло, если было довольно легко найти в гугле. - person krzysiek.ste; 12.06.2017

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

//noinspection ConvertibleToMethodValue
(tailer.run _: () => Unit) expects()
person Chris Suszyński    schedule 06.12.2017

Я использовал этот подход, пока не понял, что в Scala 2.12+ это решение устарело.

Вы получите предупреждение вроде

Eta-expansion of zero-argument method values is deprecated.

После некоторых исследований я обнаружил это решение:

(loggerMock.isInfoEnabled _ ).expects().returning(true)

or

import scala.language.postfixOps
loggerMock.isInfoEnabled _  expects () returning true
person Carlos    schedule 25.10.2017
comment
Это компилируется в 2.12+ NB: IntelliJ вызывает фиктивную ошибку компиляции в строке. - person pgn; 26.12.2017