J'ai une classe implicite qui nécessite une base de données utilisateur. Je veux utiliser self-type dans la classe implicite afin que je puisse basculer l'implémentation de la base de données dans la portée de test vers la version mockée. Comment puis-je mélanger le fournisseur de base de données dans ce cas? Par exemple, je veux que l'utilisateur de RuchUser ne s'inquiète pas d'avoir à mélanger UserDatabaseProvider en fournissant un mixage par défaut. Donc, l'utilisateur peut simplement faire User("name").userContext
et faire la même chose à la portée de test où je vais fournir le mélange par défaut pour utiliser le fournisseur de base de données simulé?Scala utilisant implicite avec les types auto
case class User(name: String)
object User {
implicit class RichUser(self: User) { this: UserDatabaseProvider =>
def userContext: String = this.getUserContext(self.name)
}
}
// Usage of Rich user should be below as I want to provide already mixed-in implicit
import User._
val context = User("name").uerContext