2013-10-08 22 views
5

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!

cevap

0

Oyunla iyi tanışmadığımı söyleyerek başlayacağım. JDBC sürücüsünü nasıl yapılandırdığınızı hiç söylemediniz. Ben test modunda iken, uygulama hala H2 DB karşı MySQL sürücü sınıfını kullanıyor olduğundan şüpheleniyorum. Test sınıf yolunuzda H2 kavanoz dosyasına da ihtiyacınız olacak.