2012-06-22 7 views
6

Birden çok işlevsel özelliği (örneğin özellikleri kullanarak) çalıştırıyorum, özellikle bir TestServer başlatan, bir HTMLUNIT tarayıcısını açan ve bir öğeyi denetlemek için bir sayfaya giderken testler yapıyorum. Söz konusu sayfa, bir ajax isteğinde test ettiğimiz öğeleri yükler. Öğenin mevcut olması için beklemek aşağıdaki hata mesajıyla zaman aşımına uğrar.Play 2.0.1'de TestServer ile birden çok işlevsel özelliği nasıl çalıştırırım?

Kod pasajı:

trait CommonSteps extends BaseSpecfication { 
    val testServer: TestServer = TestServer(3333) 
    val testServerBaseURL: String = "http://localhost:3333/" 

    override def map(fs: => Fragments) = 
    Step(testServer.start())^super.map(fs)^Step(testServer.stop()) 

} 

class FunctionalTest1 extends Specification with CommonSteps { def is = 
    ... 

    ... extends When[...] { 
    val browser: TestBrowser = TestBrowser.of(HTMLUNIT) 
    browser.goTo(testServerBaseURL + "/some_path") 
    browser 
    } 

    ... extends Then[...] { 
    browser.await.until("element that is loaded on ajax request").isPresent() 
    ... 
    } 

} 

Biz hatayı alıyorum: izolasyon çalıştırdığınızda testi çalışır

Caused by: java.sql.SQLException: Attempting to obtain a connection from a pool that has already been shutdown. 
Stack trace of location where pool was shutdown follows: 
    java.lang.Thread.getStackTrace(Thread.java:1479) 
    com.jolbox.bonecp.BoneCP.captureStackTrace(BoneCP.java:543) 
    com.jolbox.bonecp.BoneCP.shutdown(BoneCP.java:159) 
    com.jolbox.bonecp.BoneCPDataSource.close(BoneCPDataSource.java:123) 
    play.api.db.BoneCPApi.shutdownPool(DB.scala:387) 
    play.api.db.BoneCPPlugin$$anonfun$onStop$1.apply(DB.scala:252) 
    play.api.db.BoneCPPlugin$$anonfun$onStop$1.apply(DB.scala:250) 
    scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) 
    scala.collection.immutable.List.foreach(List.scala:45) 
    play.api.db.BoneCPPlugin.onStop(DB.scala:250) 
    play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:75) 
    play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:74) 
    scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) 
    scala.collection.immutable.List.foreach(List.scala:45) 
    play.api.Play$$anonfun$stop$1.apply(Play.scala:74) 
    play.api.Play$$anonfun$stop$1.apply(Play.scala:74) 
    scala.Option.map(Option.scala:133) 
    play.api.Play$.stop(Play.scala:73) 
    play.core.server.NettyServer.stop(NettyServer.scala:73) 

iken iki veya daha fazlasının çalıştırırken, biz hatası alıyorum.

Örneğim bir Scala Play uygulaması olsa da, this issue ile ilgili görünüyor. Bu sorunun Play'in daha yeni bir sürümünde düzeltildiğini herkes anlayabilir mi? Ya da, Play 2.0.1'deki bu hatayı önlemek için bir çözüm var mı.

cevap

3

Bu sorun, şu anda RC durumunda olan Play 2.0.2'de giderilecektir. Her şey geri uyumlu olduğu için 2.0.1'den 2.0.2'ye yükseltmek güvenlidir.

Bu bilgileri sağlamak için @ guillaume-bort'a teşekkürler.

+0

Daha fazla bilgi burada bulunabilir: https://groups.google.com/forum/?fromgroups=#!topic/play-framework/znFuqeRz84w – blackbox

İlgili konular