2015-10-10 107 views
0

我正在嘗試爲使用play framework 2.4和scala編寫的應用程序編寫測試。源是可用的here如何在Play框架應用程序中進行完整的集成測試?

我想寫測試,將與整個堆棧一起工作。我們正在使用通過REST API提供的neo4j數據庫。

這裏是我的測試:

package integration 

import org.specs2.mutable._ 
import org.specs2.specification._ 
import play.api.test.Helpers._ 
import play.api.test._ 
import setup.TestSetup 

class PublicAPISpec extends Specification with BeforeEach { 

    def before = TestSetup.populateNeo4JData() 

    "The score feedback badge api" should { 
    "deliver a correct svg file" in { 
     running(FakeApplication()) { 
     val svg = route(FakeRequest(GET, "/api/badges/github/test/test.svg")).get 

     status(svg) must equalTo(OK) 
     contentType(svg) must beSome.which(_ == "image/svg+xml") 
     } 
    } 
    } 
} 

這裏是我的堆棧跟蹤:

[info] The score feedback badge api should 
[error] ! deliver a correct svg file 
[error] There is no started application (Play.scala:71) 
[error] play.api.Play$$anonfun$current$1.apply(Play.scala:71) 
[error] play.api.Play$$anonfun$current$1.apply(Play.scala:71) 
[error] play.api.Play$.current(Play.scala:71) 
[error] setup.TestSetup$.setup$TestSetup$$cypher(TestSetup.scala:80) 
[error] setup.TestSetup$.clearNeo4JData(TestSetup.scala:23) 
[error] setup.TestSetup$.populateNeo4JData(TestSetup.scala:32) 
[error] integration.PublicAPISpec.before(PublicAPISpec.scala:15) 
[error] integration.PublicAPISpec.before(PublicAPISpec.scala:13) 

編輯 事實證明,像堆棧跟蹤明明指出的主要問題是在TestSetup類。這個類取決於一個遊戲應用程序運行,而不應該。經過一些重構後,它現在就像一個魅力。

回答

0

要做路由測試,您需要在測試中擁有Application上下文。
測試應與

"deliver a correct svg file" in new WithApplication { 
.... 
} 

你可以看到更多關於它在Play's page about functional tests開始。

+0

謝謝你的答案,但是我得到了完全相同的異常 –

+0

我拉了代碼,但我沒有找到該文件。 – roterl

+0

這是在一個分支,我只是推它:[這裏](https://github.com/gitlinks/gitrank-web/blob/feature/giveFeedbackBadge/test/integration/PublicAPISpec.scala)你去。謝謝您的幫助 ! –

相關問題