斯卡拉测试Web服务客户端的POST请求

问题描述:

因此,您可以找到here的Play文档给出了一个非常简单的GET调用示例,没有任何像auth头或参数。斯卡拉测试Web服务客户端的POST请求

有人能帮我弄清楚如何使用类似的策略来处理更复杂的事情,比如带有JSON数据的POST请求,并且需要身份和auth头文件?我现在无法正常工作。

我想知道如何使用ws来测试客户端来执行外部http请求。

感谢

+0

我也搜索了Play存储库寻找一些例子,但没有。 – Jeep87c

这里是代码我的项目之一片段通过其API twilio发送短信:

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

我'看着如何测试你刚刚提供的这个客户端。我更新了我的问题以使其更清晰 – Jeep87c

+0

我的回答对你有帮助吗,是否足够清楚? – Teimuraz

+0

这很清楚,但没有帮助。我的问题是我如何针对你的发送方法(或者使用带有auth的WS进行post请求的任何其他客户端方法)编写单元测试。我已经写了我的客户没有问题。另一方面测试它并不容易。 – Jeep87c