일반적인 서비스는 다음과 같습니다Guice를 사용할 때 모의 DAO 클래스를 설치하는 방법은 무엇입니까?
trait BaseService extends LazyLogging {
def getDb() = {
DatabaseHelper.getDb // database for the scala slick library
}
}
abstract class UserService extends BaseService {
def getById(userId: Int): Option[User]
}
class UserServiceImpl @Inject(val userDao: UserDao) extends UserService = {
def getById(userId: Int): Option[User] = {
getDb().withSession { implicit session =>
return userDao.getById(userId)
}
}
}
Guice 내가 좋아하는 내 개체 철사 사용 : 나는 scalatest를 사용하여 단위 테스트를 오전 때 나는 조금 혼란 스러워요, 을 지금
class ServiceModule extends ScalaModule {
def configure() {
bind[UserDao].to[UserDaoImpl]
bind[UserService].to[UserServiceImpl]
}
}
어떻게 내가 할 수있는 데이터베이스 응답을 모의하고 싶으므로 데이터베이스 접근을 끊으십시오.. 내 Guice을
class UserServiceSpec extends UnitSpec with MockitoSugar {
val userService = injector.getInstance(classOf[UserService])
describe("UserServiceSpec") {
it("should do someting") {
val abc = userService.doSomething();
abc.name should be("abc")
}
}
}
내 UnitSpec 클래스 와이어 최대 :
내 스펙 등이 보인다.
모의 객체 (mockito 사용)는 어디에서 작성해야하며 Guice를 사용하여 어떻게 연결해야합니까? ServiceModule 또는?
내 BaseService가 데이터베이스에 연결되어 있기 때문에 디자인이 잘못되었습니다. 어떻게 든 리팩토링해야합니다.
나는이 나쁜 디자인에서 벗어날 방법을 찾고 있는데, 현재 아이디어가있는 것 같습니까?
내가 guice + 스칼라 모르지만, 자바, 당신은 Modules.override를 (사용합니다에 UserDao를 mock (UserDao) 인스턴스에 바인드하는 모듈을 추가하십시오. –
단위 테스트에서 Guice를 전혀 사용하지 않아도됩니까? 나는 그것을 할 것입니다. –
@ TavianBarnes 가능하다, 생각하지 않았다. 또한 필자가 어떻게 든 배제해야하는 기본 서비스에 데이터베이스 풀이있는 문제가 있습니다. – Blankman