作者:爱你王明英 | 来源:互联网 | 2022-10-19 20:24
我的验证是验证天气orgId是否出现在响应中,并且该orgId应该包含一些值
我得到的响应是状态码200,响应主体为空。
现在我有下面的实现
Then match $.orgId == '#present'
Then match $.orgId == '#notnull'
在这种情况下,代码可以通过,理想情况下,它应该会失败,因为响应主体为空,并且响应中不存在orgId。我的问题是,为什么是代码获得通过与#present
和#notnull
即使响应主体是空的
1> Peter Thomas..:
您肯定错过了一些东西。在全新的情况下尝试此操作,然后查看它是否有效。我们在response
下面进行硬编码,这完全等同于运行时发生的事情,并且顺便说一句,这是您针对不同类型的JSON测试断言(无需进行任何HTTP调用)的一种好方法:
* def respOnse= {}
Then match $.orgId == '#present'
Then match $.orgId == '#notnull'
这给您带来了失败的期望:
assertion failed: path: $.orgId, actual: null, expected: '#present', reason: actual json-path does not exist
因此,如果您仍然遇到问题,请执行以下过程:https : //github.com/intuit/karate/wiki/How-to-Submit-an-Issue
编辑:如果您的响应是一个空字符串,但是您期望使用JSON,只需执行此操作,它将使测试失败,请参阅类型转换:https : //github.com/intuit/karate#type-conversion
* json respOnse= response
但是,正如文档中所述,您应该始终尝试匹配“完整JSON”,因此这应该可以工作:
* def respOnse= ''
Then match $ contains { orgId: '#notnull' }
编辑:这将在0.9.4 https://github.com/intuit/karate/issues/814中修复