规格2 JsonMatchers匹配';空数组';
我有以下json字符串:规格2 JsonMatchers匹配';空数组';,json,scala,specs2,Json,Scala,Specs2,我有以下json字符串: {"guid": "4bad1d9a-180f-4751-a698-4aac07b1eac7","partition":1,"roles": []} 我已经能够使用specs2的org.specs2.matcher.JsonMatchers来强制实施guid和分区,例如: json must /("guid" -> "4bad1d9a-180f-4751-a698-4aac07b1eac7") json must /("partition" -> 1)
{"guid": "4bad1d9a-180f-4751-a698-4aac07b1eac7","partition":1,"roles": []}
我已经能够使用specs2的org.specs2.matcher.JsonMatchers来强制实施guid和分区,例如:
json must /("guid" -> "4bad1d9a-180f-4751-a698-4aac07b1eac7")
json must /("partition" -> 1)
但我无法找出正确的语法来强制执行“roles”存在且“is a empty array”。这可以吗
编辑:
根据评论者的问题,我尝试了以下方法:
json must /("roles" -> "[]")
这将导致以下测试失败:
[error] {guid : 5ad4c4c5-4fdb-461b-9883-b84ff3b84610,partition : 1.0,roles : []} doesn't contain 'roles' : '[]'
要为
角色测试的值为scala.util.parsing.json.JSONArray
类型,因此您可以编写:
json must /("roles" -> JSONArray(Nil))
如果经常出现这种情况,可以定义一个值:
val empty = JSONArray(Nil)
json must /("roles" -> empty)
要为角色测试的值为scala.util.parsing.json.JSONArray
类型,因此您可以编写:
json must /("roles" -> JSONArray(Nil))
如果经常出现这种情况,可以定义一个值:
val empty = JSONArray(Nil)
json must /("roles" -> empty)
对于那些想找到答案的人来说,Eric提供的答案不再有效
当前匹配空数组的方法(specs2 3.8
)似乎是:
json must /("roles").andHave(exactly[String]())
这不是最好的方法,但这是我发现的唯一一种有效的方法,当我回过头来读的时候,它是有意义的
和have
与角色的内容匹配
和完全匹配
,没有参数,匹配的是空数组。之所以使用字符串
类型参数,是因为否则编译器会抱怨它无法推断类型。对于那些想找到答案的人来说,Eric提供的答案不再有效
当前匹配空数组的方法(specs2 3.8
)似乎是:
json must /("roles").andHave(exactly[String]())
这不是最好的方法,但这是我发现的唯一一种有效的方法,当我回过头来读的时候,它是有意义的
和have
与角色的内容匹配
和完全匹配
,没有参数,匹配的是空数组。之所以使用字符串
类型参数,是因为否则编译器会抱怨它无法推断类型。我想你已经尝试过json must/(“角色”->“[]”)了
?就在我认为在整个互联网上可能找不到这样的问题的时候。你有完全相同的问题,也有很好的答案,耶!我想你已经试过了json must/(“角色”->“[]”)
?就在我认为在整个互联网上可能找不到这样的问题的时候。你有完全相同的问题,也有很好的答案,耶!我的问题只是一个输入错误。JSON是有效的,问题是关于使用specs2 JSON匹配器确保值是空数组的语法。我可以发誓我已经尝试过了,但证据还在后面。这(当然)奏效了。非常感谢。我的问题只是一个输入错误。JSON是有效的,问题是关于使用specs2 JSON匹配器确保值是空数组的语法。我可以发誓我已经尝试过了,但证据还在后面。这(当然)奏效了。非常感谢。