在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
这不是正确使用的表达方式,但在这种情况下可能有用。
答案 0 :(得分: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)))
答案 1 :(得分:2)
看起来不像。该功能的告示标志是接受部分功能的方法,JsonMatchers上的所有方法都接受Any
。