1

嗨,我有一个使用 Pact NPM https://www.npmjs.com/package/pact生成的消费者测试

我使用以下代码生成一个 pact.json:

provider
    .addInteraction({
        state: 'test',
        uponReceiving: 'a test,
        withRequest: {
          method: 'GET',
          path: '/test'
        },
        willRespondWith: {
            status: 200,
            headers: { 'Content-Type': 'application/json' }
            body: {
                "company": like("My big company"),
                "factories": eachLike({
                    "location": like("Sydney"),
                    "capacity": like(5)
                },{min:1})
            }
        }
    })
    .then(function(){ done(); });

它生成以下 testconsumer-testprovider.json 文件:

{
  "consumer": {
    "name": "TestConsumer"
  },
  "provider": {
    "name": "TestProvider"
  },
  "interactions": [
    {
      "description": "a request for loans",
      "providerState": "broker is logged in, list all loans",
      "request": {
        "method": "GET",
        "path": "/test"
      },
      "response": {
        "status": 200,
        "headers": {
          "Content-Type": "application/vnd.hal+json"
        },
        "body": {
          "company": "My big company",
          "factories": [
            {
              "location": "Sydney",
              "capacity": 5
            }
          ]
        },
        "matchingRules": {
          "$.headers.Content-Type": {
            "match": "regex",
            "regex": "application\\/.*json.*"
          },
          "$.body.company": {
            "match": "type"
          },
          "$.body.factories": {
            "min": 1
          },
          "$.body.factories[*].*": {
            "match": "type"
          },
          "$.body.factories[*].location": {
            "match": "type"
          },
          "$.body.factories[*].capacity": {
            "match": "type"
          }
        }
      }
    }
  ],
  "metadata": {
    "pactSpecification": {
      "version": "3.0.0"
    }
  }
}

但是,当我们针对以下提供的输出进行测试时,我们会收到 geoCoords 错误,因为它是一个意外的键/值:

{
    "company": "My Company",
    "factories": [
        {
            "location": "Sydney",
            "capacity": 5
        },
        {
            "location": "Sydney",
            "geographicCoords": "-0.145,1.4445",
            "capacity": 5,
        }
    ]
}

那么是否存在允许数组中出现意外键/值的方法,因为我们只测试所需的键/值,并且我们不希望将来在将新值添加到我们的提供程序时让协议测试失败。

4

1 回答 1

0

支持您描述的场景,请参阅https://github.com/pact-foundation/pact-js/tree/master/examples/e2e以获取示例。

如果您要删除,请说出资格对象并运行测试,一切仍然有效。

如果您仍然遇到问题,请在pact-js存储库中提出缺陷,我们将深入了解它。

于 2017-05-28T00:57:50.700 回答