Uygulamam için bazı testler çalıştırmaya çalışıyorum. Yeni bir yeni bellek veritabanında test yapmak mümkün olmalı, ancak işe yaramayacağım.Bellek db oynatma çerçevesinde test testi
Testim bu şimdi benziyor:
"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 protected]", "password" -> "test123", "gender" -> "male", "birthdate" -> "Oct 1, 2013", "nationality" -> "Sweden")).get
val add2 = route(FakeRequest(POST, "/rest/personaluser").withFormUrlEncodedBody("name" -> "user2" , "email" -> "[email protected]", "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 protected]") must beTrue
personalUserRepository.checkIfPersonalUserExists("[email protected]") must beTrue
//Verify user don't exist
personalUserRepository.checkIfPersonalUserExists("[email protected]") must beFalse
//Find user by email
val findUser = route(FakeRequest(GET, "/rest/personaluserbyemail/[email protected]")).get
status(findUser) must equalTo(OK)
contentAsString(findUser) must /("name" -> "user1")
contentAsString(findUser) must /("email" -> "[email protected]")
contentAsString(findUser) must /("gender" -> "male")
contentAsString(findUser) must /("nationality" -> "Sweden")
contentAsString(findUser) must /("facebookID" -> "0")
}
}
}
Bunu çalıştırdığınızda hatası InconsistentDatabase: Database 'default' is in inconsistent state!
olsun. Bunun nedeni standart inMemoryDB'nin varsayılan veritabanı için kullandığım MySQL'i desteklememesi olabilir mi?
Ancak, ben artık şöyle memoryDB eklemeye çalıştı:
burada
def memoryDB = Map("db.default.url" -> "jdbc:h2:mem:playdb;MODE=MYSQL;DB_CLOSE_DELAY=-1;IGNORECASE=TRUE;TRACE_LEVEL_SYSTEM_OUT=1")
bunu Tanımlı Ve bu gibi kullanmak:
"Server" should {
"persist data for personal user properly" in {
running(FakeApplication(additionalConfiguration = memoryDB)) {
Ama hiç böyle yaptığımda , bellek db kullanmayın, sınama //Count users
başarısız, çünkü 2, ancak 7 eşit değil. Yine de, gerçek veritabanını kullanır yeni taze bellek db kullanıyorum Bu FakeAp kullanmaya çalışıyorum katmer.
Neyi yanlış yapıyorum ya da neyi özlüyorum?
Beni doğru yola koyabilecek herhangi bir cevap çok beğenildi! Teşekkürler!