我有一个返回哈希数组的服务,其顺序是不确定的。我需要验证是否存在一个具有特定键/值的哈希,并且该哈希填充了数据,但其余的哈希我并不关心他们的数据。例如,如果服务返回此:
[
{
"key":"meaningless1",
"data": {
}
},
{
"key":"meaningless2",
"data": {
"some": "data",
"goes": ["here"]
}
},
{
"key":"meaningful",
"data": {
"regex": "value",
"integer": 1,
"boolean": true
}
}
]
我想验证在数组中,有一个散列有"key":"meaningful"
,并且该散列中的data
散列的密钥为regex
且值匹配正则表达式,integer
的键是一个整数,而boolean
的键是一个布尔值。我不在乎其他哈希是否有数据,或者他们所拥有的数据是否与此架构匹配。
我无法使用EachLike
,因为这会针对所有哈希验证架构,而不仅仅是具有正确key
的哈希。我也试过这样的事情:
expected = [
{
"key":"meaningful",
"data":{
"regex":Term("v.*", "value"),
"integer":Like(1),
"boolean":Like(True)
}
}
]
但它只是试图验证结果数组中的第0个元素,这意味着它试图验证:
{
"key":"meaningless1",
"data": {
}
},
我想要的是什么?
答案 0 :(得分:1)
目前无法实现。您可能希望加入此对话,了解您要求的功能:https://github.com/pact-foundation/pact-specification/issues/38
但是,我要指出的一点是,当您可以控制提供程序上的数据时,pact最有效。如果您无法控制数据,那么pact可能不是您的方案的最佳工具。阅读:https://github.com/pact-foundation/pact-ruby/wiki/Why-Pact-may-not-be-the-best-tool-for-testing-public-APIs