Imaginez que j'ai un service:Test d'une unité avec la classe implicite dans Scala
class ServiceA(serviceB: ServiceB) {
import Extractor._
def send(typeA: A) = serviceB.send(typeA.extract)
}
object Extractor {
implicit class Extractor(type: A) {
def extract = ???
}
}
Je veux la méthode extract
à une définition implicite car elle ne se rapporte pas directement à A
type/domaine et est une solution extension ad hoc spécifique.
Maintenant, je voudrais écrire un test unitaire très simple qui confirme que serviceB.send
est appelé.
Pour cela, je moque service
et passe un A
raillé à send
. Ensuite, je pourrais simplement affirmer que serviceB.send
a été appelé avec le A
raillé.
Comme vu dans l'exemple, la méthode send
effectue également une transformation sur le paramètre typeA
, donc je devrais utiliser la méthode extract
pour retourner la valeur spécifiée. Cependant, A
n'a pas la méthode extract
- il vient du implicit class
. Donc la question est - comment puis-je me moquer de la classe implicite comme dans l'exemple ci-dessus que les importations ne sont pas des citoyens de première classe.