내 Play2 앱에서 내 db 통합 테스트를 작성하는 방법을 알아 내려고하고 있습니다. 나는 응용 프로그램을 실행할 때 사용되는 xxx_test
를 지정 내 사용자 개체에서Play2 및 Scala, 적절한 DB로 실행되도록 통합 테스트를 구성하는 방법
db.xxx_test.driver=com.mysql.jdbc.Driver
db.xxx_test.url="jdbc:mysql://localhost/xxx_test?characterEncoding=UTF-8"
db.xxx_test.user="root"
db.xxx_test.password=""
db.h2.driver=org.h2.Driver
db.h2.url="jdbc:h2:mem:play"
db.h2.user=sa
db.h2.password=""
: 내 conf의 파일에서
내가 테스트를 위해 정기적으로 사용하고 수소 DB에 대한 두 개의 데이터베이스, xxx_test을 지정했습니다. 내 테스트에서
def createUser(user: User): Option[User] = {
DB.withConnection("xxx_test") {
implicit connection =>
SQL("insert into users(first_name, last_name, email, email_validated, last_login, created, modified, active) values({first_name},{last_name},{email},{email_validated},{last_login}, {created}, {modified}, {active})").on(
'first_name -> user.firstName,
'last_name -> user.lastName,
'email -> user.email,
'email_validated -> user.emailValidated,
'last_login -> user.lastLogin,
'created -> user.created,
'modified -> user.modified,
'active -> true
).executeInsert().map(id => {
return Some(User(new Id[Long](id), user.firstName, user.lastName, user.email, user.emailValidated, user.lastLogin, user.created, user.modified, true))
}
)
}
None
}
나는 새로운 인 메모리 데이터베이스를 생성하고 생성하고 테스트를 위해 내 객체 를 얻기 위해 사용자를 사용합니다. 사용자 객체가 xxx_test
아닌 h2
DB를 사용하기 때문에 물론
class DBEvolutionsTest extends Specification {
"The Database" should {
"persist data properly" in {
running(FakeApplication(additionalConfiguration = inMemoryDatabase())) {
User.create(User(Id[Long](1L), "jakob",
"aa",
"aaa",
true,
DateTime.now(),
DateTime.now(),
DateTime.now(),
true))
val newUser = User.findBy(Id[Long](1L))
newUser.get.firstName must beEqualTo("jakob")
}
}
}
}
이 올바른 방법이 아니다. 이 테스트는 User (DB.withConnection("xxx_test")
) 객체에 db를 지정했기 때문에 실제 db에서 사용자를 만들고 메모리에있는 사용자는 생성하지 않습니다. 내가이 일을 몇 가지 현명한 방법이 생각, 나는 당신이이 문제를 해결 한 방법 User.create(User(...), "xxx_test")
같은 응용 프로그램 INTE 주위의 DB 이름을 전달 싶지 않아?
프리젠 테이션에 제시된 방법을 사용하는 경우 독자적으로 'createUser (u) (conn)'를 수행하지 않아도된다는 점에 유의하십시오. – Mortimer
자세한 내용은 [여기] (https://coderwall.com/p/neukwa) 및 [여기] (https://coderwall.com/p/kh_z5g) – Mortimer