pact验证程序失败,出现Encoding :: UndefinedConversionError:从ASCII-8BIT到UTF-8的“ \ xE2”

时间:2018-07-31 03:00:53

标签: pact pact-python

我能够使用如下所示的模拟服务进行模拟,但是当我尝试根据提供程序验证模拟时,它会抛出错误。我怀疑是因为日期值。请您帮我一个问题

模拟Jason文件:

@Mattthew-感谢您的关注。我已经通过重新运行模拟清理了模拟。我没有嘲笑全部服务响应,而是只嘲笑了一项。

模拟代码

'url = 'http://localhost:1234'
        expected = {'class': 'HealthCheck'}

模拟JSON

'{
  "consumer": {
    "name": "consumer"
  },
  "provider": {
    "name": "provider"
  },
  "interactions": [
    {
      "description": "a request for the health check",
      "providerState": "the health of the system is OK",
      "request": {
        "method": "get",
        "path": "/"
      },
      "response": {
        "status": 200,
        "headers": {
        },
        "body": {
          "class": "HealthCheck"
        }
      }
    }
  ],
  "metadata": {
    "pactSpecification": {
      "version": "2.0.0"
    }
  }
}'       

真实服务提供商的响应

'{
"class": [
"HealthCheck"
],
"properties": {
"timestamp": "2018-08-01T00:10:00+0000",
"systemName": "Test",
"buildInfo": {
"buildDate": "2018-07-27T07:38:19+0000",
"appVersion": "1111",
"revision": "2 ",
"branch": "develop"
},
"health": "OK",
"checks": []
},
"links": [
{
"rel": [
"self"
],
"href": " check"
}
]
}' 

针对真正的提供程序运行时出错: 1)验证消费者与提供者之间的协定鉴于系统的运行状况正常,使用GET进行检查的请求/返回具有匹配主体的响应      失败/错误:expect(response_body).to match_term Expected_response_body,diff_options      编码:: UndefinedConversionError:        从ASCII-8BIT到UTF-8的“ \ xE2”

1 个答案:

答案 0 :(得分:0)

是这行吗?

"name": "consumer"`enter code here`

背tick内部有什么东西?它似乎不是有效的JSON-您是否手动对其进行了修改?

此外,不确定是否是故意的,但您的值中似乎也有很多不必要的空格。可能也值得检查。