2

在 specs2 测试中,我正在使用 JSON 匹配器验证 json 字符串。我知道可以使用正则表达式来匹配这样的值

someJson must */("key")/("(one|other)".r)

是否有可能以一种简洁的方式使用其他字符串匹配器(例如包含)?

鉴于这个混乱的例子:

val someJson = """{"blob": "multiline string
                  |with various line endings"}"""

这个匹配器

someJson must */("blob")/contains("various")

看起来比

someJson must */("blob")/"[^v]various.*".r

这不是正确的表达方式,但在这种情况下可能会起作用。

4

2 回答 2

6

现在可以(在 specs2-1.12.4-SNAPSHOT 和 specs2-1.13.1-SNAPSHOT 中)使用 specs2 匹配器以及简单的字符串和正则表达式来匹配值和键:

person must /("p.*".r) */(".*on".r) /("age" -> "33")
person must /("p.*".r) */(".*on".r) /("age" -> "\d+\.\d".r)
person must /("p.*".r) */(".*on".r) /("age" -> startWith("3"))
person must /("p.*".r) */(".*on".r) /("age" -> (be_>(30) ^^ ((_:String).toInt)))
于 2013-02-15T11:48:46.013 回答
2

看起来不像。该功能的标志是接受部分函数的方法,并且 JsonMatchers 上的所有方法都接受Any

于 2013-02-12T17:58:38.480 回答