json - Playframework Scala Specs2 JSON 匹配器

标签 json scala playframework-2.0 specs2

我正在使用 Play !框架并尝试在 Specs2 测试中处理 JSON 响应消息,但没有成功。

我想要做的是在 JsValue 中断言键-> 值对,如下例所示......但我无法让匹配器正确通过。

import org.specs2.mutable._
import play.api.libs.json.{Json, JsValue}

class JsonSpec extends Specification {

  "Json Matcher" should {

    "Correctly match Name->Value pairs" in {
      val resultJson:JsValue = Json.parse("""{"name":"Yardies"}""")
      resultJson must  /("name" -> "Yardies")
    }

    "Correctly match Name->Value pairs with numbers as doubles" in {
      val resultJson:JsValue = Json.parse("""{"id":1}""")
      resultJson must  /("id" -> 1.0)
    }
  }
}

我得到的错误是
{name : Yardies} doesn't contain '(name,Yardies)'


{id : 1.0} doesn't contain '(id,1.0)'

不是很有帮助,我想这是我遗漏的一些简单的东西(Scala 和 Play 都是新的)

史蒂夫

最佳答案

JsonMatchers在 specs2 中应该收紧一点。他们是 Matcher[Any] ,其中 Any应该有一个 toString可以由 Scala 的 json 解析器(而不是 Play 的解析器)解析的方法。

以下规范按预期工作:

class JsonSpec extends Specification {

  "Json Matcher" should {

    "Correctly match Name->Value pairs" in {
      val resultJson = """{"name":"Yardies"}"""
      resultJson must  /("name" -> "Yardies")
    }

    "Correctly match Name->Value pairs with numbers as doubles" in {
      val resultJson = """{"id":1}"""
      resultJson must  /("id" -> 1.0)
    }
  }
}

在你的情况下,我怀疑解析 toString Play 的 Json 值的表示返回的内容与匹配器所期望的略有不同。这将在下一个规范 2 版本中修复。

关于json - Playframework Scala Specs2 JSON 匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15694461/

相关文章:

javascript - AngularJS HTTP POST 不发送数据

scala - 还要注意项目文件

javascript - Postman form-data 和 x-www-form-urlencoded 可以工作,但原始 json 不行

java - Java中通过socket传递压缩的JSON

javascript - jstree 显示原始 json,而不是树

scala - 如何在恢复期间拒绝快照?

scala - 帮助 Drools 与 Scala 集成

java - 玩!无法将 java 列表转换为 scala 列表

scala - 如何在 Scala 的 Play!2 中的表单中包含图片类型?

java - Play Framework 2.2 : How to get current controller and action in java