pact:验证数组是否包含匹配的哈希

时间:2017-12-04 14:28:28

标签: python pact pact-python

我有一个返回哈希数组的服务,其顺序是不确定的。我需要验证是否存在一个具有特定键/值的哈希,并且该哈希填充了数据,但其余的哈希我并不关心他们的数据。例如,如果服务返回此:

[
    {
        "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": {

    }
},

我想要的是什么?

1 个答案:

答案 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