Stellen Ich habe einen Dienst:eine Einheit mit impliziter Klasse in Scala Testen
class ServiceA(serviceB: ServiceB) {
import Extractor._
def send(typeA: A) = serviceB.send(typeA.extract)
}
object Extractor {
implicit class Extractor(type: A) {
def extract = ???
}
}
Ich mag die extract
Methode ein implizit definiert werden, da sie bezieht sich nicht direkt auf A
Typen/Domain und eine Lösung spezifische Ad-hoc-Erweiterung.
Jetzt möchte ich einen sehr einfachen Komponententest schreiben, der bestätigt, dass serviceB.send
aufgerufen wird.
Dafür spotte ich service
und übergebe ein A
an send
gespottet. Dann könnte ich einfach behaupten, dass serviceB.send
mit dem Mocked A
aufgerufen wurde.
Wie im Beispiel zu sehen, die send
Methode auch einige Transformation auf typeA
Parameter, so würde ich müssen extract
Methode, um meinen angegebenen Wert zurückgeben. A
hat jedoch keine extract
Methode - es kommt von der implicit class
.
Die Frage ist also - wie verspotte ich die implizite Klasse wie im obigen Beispiel, da Importe keine Bürger erster Klasse sind.