2016-08-07 8 views
0

ScalaTestを使用してWeb APIをテストしようとしていますが、私のsiteData()アクションを実行するAPIを取得できません。次のコードは400になりますが、外部からの同じペイロードを実行するだけで問題ありません。ScalaTestを使用してPlayFramework(2.5.x)Web APIをテストする

class DeviceApiSpec extends TestEnvironmentSpec with Results { 

    "DeviceApi#siteData()" should { 

    val api = new DeviceApi(...) // new up the controller 

     "accept a valid location" in { 
      val apikey = ... 
      val location = Json.obj(...) 
      val request = FakeRequest(POST, "/api/device") 
         .withHeaders(apikey) 
         .withHeaders("Content-Type" -> "application/json") 
         .withJsonBody(location) 
      val result = api.siteData().apply(request).run() 
      // do some assertions once I get it working 
     } 
    } 
}  

ヘッダーと本文は正しいです。私はテストを正しく設定しているかどうかはわからないので、誰かがうまくいけば明らかなエラーを見つけられるかどうか疑問に思う。

+0

エンドポイントは正しいですか? HTTP動詞とURL? –

+0

@ Mika'ilはい、動詞とURLは正しいです – andyczerwonka

答えて

1

私はそれを働かせることができました。 apply().run()でapiを実行する代わりに、EssentialActionCallerを使用しました。

val result = call(api.siteData(), request) 
status(result) mustBe OK 
contentAsJson(result) mustBe Json.obj(...) 
関連する問題