在specs2测试中,我正在使用JSON匹配器验证json字符串.我知道可以使用正则表达式来匹配这样的值
someJson must */("key")/("(one|other)".r)
Run Code Online (Sandbox Code Playgroud)
是否有可能以一种简洁的方式使用其他字符串匹配器(例如包含)?
鉴于这个凌乱的例子:
val someJson = """{"blob": "multiline string
|with various line endings"}"""
Run Code Online (Sandbox Code Playgroud)
这个匹配器
someJson must */("blob")/contains("various")
Run Code Online (Sandbox Code Playgroud)
看起来比清洁得多
someJson must */("blob")/"[^v]various.*".r
Run Code Online (Sandbox Code Playgroud)
哪个不适合使用,但在这种情况下可能有用.
现在可以(在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)))
Run Code Online (Sandbox Code Playgroud)