如何在SprayTest中使用JSON主体模拟POST请求?

we

如果我有一个像这样解组json的端点:

(path("signup")& post) {
    entity(as[Credentials]) { credentials =>
    …

如何使用Spray测试规格进行测试:

"The Authentication service" should {

"create a new account if none exists" in {
   Post("/api/authentication/signup", """{"email":"foo", "password":"foo:" }""") ~> authenticationRoute ~> check {
    handled === true
  }
}
}

显然,由于以下几个原因,这行不通。正确的方法是什么?

4lex1v

诀窍是设置正确的Content-Type:

Post("/api/authentication/signup", 
    HttpBody(MediaTypes.`application/json`, 
          """{"email":"foo", "password":"foo" }""")
)

但这变得更加简单。如果您有Spray-json依赖项,那么您需要做的就是导入:

import spray.httpx.SprayJsonSupport._
import spray.json.DefaultJsonProtocol._

第一次导入包含(un)marshaller,它将字符串转换为json请求,而您无需HttpEntity使用显式媒体类型将其包装

第二个导入包含基本类型的所有Json读取器/写入器格式。现在您可以编写:Post("/api/authentication/signup", """{"email":"foo", "password":"foo:" }""")但是,如果您有一些案例类,它甚至会更酷。对于前。您可以定义一个case class CredentialsjsonFormat为此提供并在测试/项目中使用它:

case class Creds(email: String, password: String)
object Creds extends DefaultJsonProtocol {
  implicit val credsJson = jsonFormat2(Creds.apply)
}

现在正在测试中:

Post("/api/authentication/signup", Creds("foo", "pass"))

Spray会自动将其编组到Json请求中 application/json

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在单元测试中使用JSON发送请求

如何在Django 1.6中使用HTTP POST请求接收json数据?

如何在Java中使用Post参数发送简单的HTTP Post请求

如何在MockRestServiceServer中验证JSON请求主体

如何在Golang中解密POST请求主体

如何使用Ruby Mechanize设置POST请求的主体?

如何在OpenAPI(Swagger)中描述此POST JSON请求主体?

如何在JSON模式中使用oneOf来验证POST和PATCH请求?

在POST请求中使用JSON数组

如何在Elixir Plug测试中设置POST请求的主体?

如何在JSON请求正文中使用php变量?

在Azure Logic应用中使用HTTP操作时,如何在JSON主体中使用“ @ odata.id”?

如何在Android中使用Retrofit发送JSON POST请求并接收String响应

如何在React Native中构造一个POST请求主体而不是字符串化的json而不是json?

如何在Lua中使用OAUTH发送POST请求

无法使用JSON主体复制POST请求

如何在Kotlin中使用gson解析翻新的json主体

如何在Mockito中使用条件模拟

如何在Qt中使用JSON正文发送POST请求

如何在一个端点中使用不同的请求主体?

如何在浏览器中使用JSON数据模拟REST发布请求

如何使用Nginx和Lua处理POST请求的JSON主体?

如何在Swift中使用变量发送POST请求

如何在翻新请求的主体下面发布原始json?

如何在Python中使用模拟?

如何在 Express 中使用请求进行 POST

如何在 RoR 网站中使用“POST url”JSON 文件?

如何在 Ruby 中使用 Post 请求发送 XML 文件

如何在循环的每次迭代中使用不同的主体数据在 For 循环中执行多个 axios POST 请求?