2017-09-13 3 views
0

Playのドキュメントでは、という非常に簡単な例で、authヘッダーやパラメータなどを使わずにGET呼び出しを行うことができます。POST要求用のWebサービスクライアントをスカラでテストする

誰かが、bodyとauthヘッダーとしてJSONデータが必要なPOST要求のような、より複雑な何かに対して同様の戦略を使用する方法を理解できますか?私は今すぐ働くことができません。

wsを使用してクライアントをテストして、外部のhttp要求を行う方法を知りたい。ここで

おかげ

+0

また、Playのリポジトリでいくつかの例を探していますが、何も検索しませんでした。 – Jeep87c

答えて

0

はtwilio APIを介してSMSを送信し、私のプロジェクトの1からのコードの抜粋です:

class SmsServiceImpl @Inject()(config: Configuration, ws: WSClient) extends SmsService { 

    val twilloAccountSid = config.getString("twillo.accountSid").get 
    val twilloAuthToken = config.getString("twillo.authToken").get 
    val smsApiUrl = config.getString("twillo.apiBaseUrl").get + "/" +twilloAccountSid+"/Messages.json" 

    override def send(phone: String, message: String): Future[Unit] = { 
    val data = Map(
     "To" -> Seq(phone), 
     "From" -> Seq(config.getString("twillo.fromPhone").get), 
     "Body" -> Seq(message) 
    ) 
    val response: Future[WSResponse] = ws.url(smsApiUrl).withAuth(twilloAccountSid, twilloAuthToken, WSAuthScheme.BASIC).post(data) 
    response.map { response => 
     response.status match { 
     case 201 => Unit 
     case _ => throw new SmsSendingException(s"Failed to send sms. Got https status: ${response.status}") 
     } 
    } 
    } 

それは、認証とPOSTリクエストです。

+0

I 'このようなクライアントのテスト方法を探しています。私はそれを明確にするために私の質問を更新しました – Jeep87c

+0

私の答えはあなたを助けましたか、それは十分ですか? – Teimuraz

+0

十分にはっきりしていますが、それは助けにはなりません。私の質問は、あなたのsendメソッド(またはauthを使ってWSを使ってPOSTリクエストを行う他のクライアントメソッド)に対して単体テストを書く方法です。私はすでに問題なくクライアントを書いています。それをもう一方の手でテストするのは簡単ではありません。 – Jeep87c

関連する問題