【问题标题】:Is it possible to use string matchers in combination with specs2 Json matchers?是否可以将字符串匹配器与 specs2 Json 匹配器结合使用?
【发布时间】:2013-02-16 15:24:59
【问题描述】:

在 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

这不是正确使用的表达方式,但在这种情况下可能有效。

【问题讨论】:

  • 有什么具体的事情你想做而你不能用正则表达式做吗?
  • 好吧,我想不出任何我不能用正则表达式匹配的字符串。也就是说,可读测试对我来说很重要。我将通过一个实际上与正则表达式混淆的示例来更清楚地说明问题。

标签: scala specs2


【解决方案1】:

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

【讨论】:

  • 改变现实让你的答案被接受,嗯。不错,看起来不错!
【解决方案2】:

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

【讨论】:

  • @iwein 当有人发现 Specs2 没有做的事情并让 Eric 知道时,通常会出现这种情况......
猜你喜欢
  • 2013-03-19
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 2021-08-16
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多