Scala 可以将字符串匹配器与specs2 Json匹配器结合使用吗?

Scala 可以将字符串匹配器与specs2 Json匹配器结合使用吗?,scala,specs2,Scala,Specs2,在specs2测试中,我使用json匹配器验证json字符串。我知道可以使用正则表达式来匹配这样的值 someJson must */("key")/("(one|other)".r) 是否可以整洁地使用其他字符串匹配器(例如contains)? 考虑到这个混乱的例子: val someJson = """{"blob": "multiline string |with various line endings"}""" 这个媒人 someJson mus

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

someJson must */("key")/("(one|other)".r)
是否可以整洁地使用其他字符串匹配器(例如contains)?

考虑到这个混乱的例子:

val someJson = """{"blob": "multiline string
                  |with various line endings"}"""
这个媒人

someJson must */("blob")/contains("various")
看起来比以前干净多了

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

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

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

现在(在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)))

有没有什么特定的东西是你想做的,而正则表达式做不到的?嗯,我想不出任何字符串匹配,正则表达式做不到。也就是说,可读性测试对我来说很重要。我会用一个例子让这个问题更清楚一点,这个例子会让正则表达式变得混乱。改变现实让你的答案被接受,嗯。不错,看起来很棒@我想,如果有人发现Specs2做不到的事情并让Eric知道,通常情况就是这样。。。