2015-12-01 7 views
15

ich keine Unterlagen finden konnten, die erklärt, wie überladene Methoden verspotten, die keine Argumente in scalamock zB nehmenScalamock 3. Mock überladene Methode ohne Parameter

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

die Funktion zu verspotten, die die Marker nimmt, kann man einfach verwenden

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

Aber wie die andere Methode zu verspotten, die keine Parameter nimmt? Jede Hilfe wird geschätzt.

Antwort

19

Habe ich es endlich aus:

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

Dieses issue mir sehr geholfen. Trotzdem wäre es schön, wenn so etwas dokumentiert wäre.

+3

Dies sollte unbedingt dokumentiert werden. Ich habe ungefähr eine Stunde damit verbracht, danach zu suchen. Ich überlege, ob ich in den Dokumenten eine Pull-Anforderung senden soll. – EmptyFlash

+0

wurde es schon akzeptiert? – sam

+0

Große Hilfe. Glücklich, wenn es ziemlich einfach war, in Google zu finden. –

2

Ich benutzte diesen Ansatz, bis ich erkannte, dass in Scala 2.12+ diese Lösung veraltet ist.

Sie eine Warnung wie

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

Nach einiger forsch ich diese Lösung fand heraus:

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

oder

import scala.language.postfixOps 
loggerMock.isInfoEnabled _ expects() returning true 
+0

Dies kompiliert in 2.12 + Hinweis: IntelliJ löst einen gefälschten Kompilierfehler in-line – pgn

3

In scala 2.12 dies auch funktioniert (keine Inspektion für Intellij):

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

ty. Dies ist die einzige Methode, die für mich funktioniert. – acumartini