web-dev-qa-db-ja.com

Scalamock3。パラメーターなしのモックオーバーロードメソッド

Scalamockで引数をとらないオーバーロードされたメソッドをモックする方法を説明するドキュメントが見つかりませんでした。

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

マーカーを取る関数をモックするには、簡単に使用できます

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

しかし、パラメータをとらない他のメソッドをモックする方法は?どんな助けでも大歓迎です。

24
user2715478

私はついにそれを理解しました:

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

これ 問題 は私を大いに助けました。それでも、このようなものを文書化しておくとよいでしょう。

37
user2715478

scala 2.12ではこれも機能します(Intellijの検査なし):

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

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
7
Carlos