2016-04-17 7 views
0

実際のHTTPスタックでPlayフレームワークアプリケーションをテストする方法の例が"Testing with a server"あります。Playframework:サーバー例でのテストがコンパイルされない

私は、Play 2.5.2とScala 2.11.7のサンプルを成功せずにコンパイルしようとしました。元の例は、輸入がなかった。ここでは輸入品とのコード例は、私が取得するために追加されている(ほぼ)コンパイル:

package models 

import org.scalatestplus.play.{OneServerPerSuite, PlaySpec} 
import play.api.cache.EhCacheModule 
import play.api.inject.guice.GuiceApplicationBuilder 
import play.api.libs.ws.WSClient 
import play.api.routing.sird._ 
import play.api.routing._ 
import play.api.mvc._ 
import play.api.mvc.Results._ 

object TestExp04 { 

} 

class ExampleSpec extends PlaySpec with OneServerPerSuite { 

    // Override app if you need an Application with other than 
    // default parameters. 
    implicit override lazy val app = 
    new GuiceApplicationBuilder().disable[EhCacheModule].router(Router.from { 
     case GET(p"/") => Action { Ok("ok") } 
    }).build() 

    "test server logic" in { 
    val wsClient = app.injector.instanceOf[WSClient] 
    val myPublicAddress = s"localhost:$port" 
    val testPaymentGatewayURL = s"http://$myPublicAddress" 
    // The test payment gateway requires a callback to this server before it returns a result... 
    val callbackURL = s"http://$myPublicAddress/callback" 
    // await is from play.api.test.FutureAwaits 
    val response = await(wsClient.url(testPaymentGatewayURL).withQueryString("callbackURL" -> callbackURL).get()) 

    response.status mustBe OK 
    } 
} 

、最終的なコンパイルエラーがある:

[error] /home/js/workspace/example/server/test/models/TestExp04.scala:32: not found: value await 
[error]  val response = await(wsClient.url(testPaymentGatewayURL).withQueryString("callbackURL" -> callbackURL).get()) 
[error]     ^

神秘awaitは何?これを実行するにはどうすればよいですか?

例の作者へのフィードバックとして、例を準備するときにインポートを取り除かないでください。輸入の適切な組み合わせを推測するのに多くの時間がかかることがあります。

+0

この特定のドキュメントの問題に関する問題をここで開くことができます:https://github.com/playframework/scalatestplus-play – marcospereira

答えて

1

は実は答えは「Writing functional tests with ScalaTest」の場所に以前のドキュメントで、それはすべてのヘルパーをインポートすることを提案し

た:

import org.scalatest._ 
import org.scalatestplus.play._ 
import play.api.test._ 
import play.api.test.Helpers.{GET => GET_REQUEST, _} 

ここで最後のインポートは、問題を解決しました。だから、必要な輸入品は以下のとおりです。

import play.api.test.Helpers.{GET => GET_REQUEST, _} 
import org.scalatestplus.play.{OneServerPerSuite, PlaySpec} 
import play.api.cache.EhCacheModule 
import play.api.inject.guice.GuiceApplicationBuilder 
import play.api.libs.ws.WSClient 
import play.api.routing.sird._ 
import play.api.routing._ 
import play.api.mvc._ 
import play.api.mvc.Results._ 
+0

これを含むようにドキュメントを更新する必要があります。ドキュメントには、「PlayのビルトインテストサポートとScalaTest + Playのすべてに以下のインポートでアクセスできます:」と明記されています。どちらの場合もそうではありません。 – decapo

0

インポートplay.api.test.FutureAwaits。

import play.api.test.FutureAwaits._ 
+1

エラーの原因となった追加: オブジェクトFutureAwaitsはplay.api.testパッケージのメンバーではありません。注意:特性FutureAwaitsは存在しますが、コンパニオンオブジェクトはありません。 – user4955663

0

はまたあなたも、あなたにそれが長く指定した期間よりもかかる場合、テストをタイムアウトするための良い方法を提供します

scala.concurrent.Await.result(scala.concurrent.Future<actually it takes super class Awaitable>, 
    scala.concurrent.Duration) 

を使用することができます。

関連する問題