我能够使用如下所示的模拟服务进行模拟,但是当我尝试根据提供程序验证模拟时,它会抛出错误。我怀疑是因为日期值。请您帮我一个问题
模拟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”
答案 0 :(得分:0)
是这行吗?
"name": "consumer"`enter code here`
背tick内部有什么东西?它似乎不是有效的JSON-您是否手动对其进行了修改?
此外,不确定是否是故意的,但您的值中似乎也有很多不必要的空格。可能也值得检查。