アプリケーションのいくつかのテストを実行しようとしています。新しいメモリデータベースでテストを実行できるはずですが、うまくいきません。
私のテストは次のようになります。
"Server" should {
"persist data for personal user properly" in {
running(FakeApplication(additionalConfiguration = inMemoryDatabase())) {
//Create personal users
val add1 = route(FakeRequest(POST, "/rest/personaluser").withFormUrlEncodedBody("name" -> "user1" , "email" -> "email@test1.com", "password" -> "test123", "gender" -> "male", "birthdate" -> "Oct 1, 2013", "nationality" -> "Sweden")).get
val add2 = route(FakeRequest(POST, "/rest/personaluser").withFormUrlEncodedBody("name" -> "user2" , "email" -> "email@test2.com", "password" -> "test123", "gender" -> "male", "birthdate" -> "Oct 1, 2013","nationality" -> "Sweden")).get
status(add1) must equalTo(OK)
status(add2) must equalTo(OK)
//Count users
personalUserRepository.getAllPersonalUsers().length must beEqualTo(2)
//Verify users exist
personalUserRepository.checkIfPersonalUserExists("email@test1com") must beTrue
personalUserRepository.checkIfPersonalUserExists("email@test2com") must beTrue
//Verify user don't exist
personalUserRepository.checkIfPersonalUserExists("email@test3com") must beFalse
//Find user by email
val findUser = route(FakeRequest(GET, "/rest/personaluserbyemail/email@test1.com")).get
status(findUser) must equalTo(OK)
contentAsString(findUser) must /("name" -> "user1")
contentAsString(findUser) must /("email" -> "email@test1.com")
contentAsString(findUser) must /("gender" -> "male")
contentAsString(findUser) must /("nationality" -> "Sweden")
contentAsString(findUser) must /("facebookID" -> "0")
}
}
}
これを実行すると、エラーが発生しますInconsistentDatabase: Database 'default' is in inconsistent state!
。これは、標準の inMemoryDB がデフォルト データベースに使用した MySQL をサポートしていない可能性があるためですか?
ただし、代わりに次のようにmemoryDBを追加しようとしました:
ここで定義した
def memoryDB = Map("db.default.url" -> "jdbc:h2:mem:playdb;MODE=MYSQL;DB_CLOSE_DELAY=-1;IGNORECASE=TRUE;TRACE_LEVEL_SYSTEM_OUT=1")
そして、次のように使用します。
"Server" should {
"persist data for personal user properly" in {
running(FakeApplication(additionalConfiguration = memoryDB)) {
しかし、私がこのようにすると、メモリ内データベースを使用しません//Count users
.2ではなく7であるため、テストは失敗します.とにかく、使用しようとする新しい新しいメモリデータベースではなく、実際のデータベースを使用します.この FakeApplication で。
私は何を間違っていますか、または何が欠けていますか?
私を正しい軌道に乗せることができる答えは大歓迎です! ありがとう!