0

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

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

    }
},

我想要的可能吗?

4

1 回答 1

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

于 2017-12-05T08:29:08.600 回答