У меня есть класс Repo
.Класс имеет поле hasher
типа Hasher
.Hasher
имеет метод hash
.Repo
используется в классе User
, который я тестирую модулем.
class User(repo:Repo){
signup(signupInfo:SignupInfo){
val hashedPassword = repo.hasher.hash(signupInfo.password);
}
}
В модульном тесте я высмеял Repo
.
val mockRepository = mock(classOf[Repo])
, а затемвызовите User
метод signup
в тесте.
val response: Future[Result] = user.signup(request)
Но так как User
напрямую вызывает Hasher
hash
метод в signup
, код падает val hashedPassword = repo.hasher.hash(signupInfo.password);
,Я полагаю, что это потому, что когда я высмеиваю Repo
и могу высмеивать его методы, hasher
- это не метод, а экземпляр Hasher
, и он, вероятно, равен нулю.
Как я могу высмеивать переменные-члены(не методы) макета, если я не могу реорганизовать код и создать методы получения и установки.