2016-02-27 6 views
0

У меня есть SCALA чертаКак придать черты с macwire

trait UserRepository { 
    def findByEmail(email: String): User 
} 

Я хотел бы, чтобы ввести это в сервис с MacWire

class AccountService(){ 
    val userRepo = wire[UserRepository] 
} 

И затем использовать его в тесте или класса

class AccountServiceSpec { 
    val userRepo = new UserRepositoryImpl() 
    val accountSvc = new AccountService() //<--not manually injecting repo in service constructor 
} 

, но я получаю ошибку компиляции в классе обслуживания

Не могу найти открытый конструктор, ни объект компаньона для accounts.repository.UserRepository

ответ

1

Вы можете попытаться преобразовать userRepo параметр класса, что позволяет macwire автоматически обеспечивает его значение для обслуживания:

import com.softwaremill.macwire._ 

case class User(email: String) 

trait UserRepository { 
    def findByEmail(email: String): User 
} 

class AccountService(val userRepo: UserRepository) 

class UserRepositoryImpl extends UserRepository{ 
    def findByEmail(email: String): User = new User(email) 
} 

class AccountServiceSpec { 
    val userRepo = new UserRepositoryImpl() 
    val accountSvc = wire[AccountService] //<--not manually injecting repo in service constructor 
} 
+0

Спасибо, это то, что я искал. – decapo

 Смежные вопросы

  • Нет связанных вопросов^_^