是否可以在要断言的请求中提取键值对之一的值

Sad*_*q K 4 karate

彼得为我提供了一个使用空手道 0.9.3 来应用示例中的断言的解决方案

试图从请求中做一些断言,这将在响应中出现

我想知道是否可以从请求而不是完整请求中声明一个值。

**Background:**
*  configure headers = read('classpath:merchantServiceheaders.js')

   Given url MservUrl 
   And path 'XXXXXX'

   And request Data
   When method POST 
   Then status 200 
   And match response != null 
   And match $ contains {serviceName: 'XXXXX'Service', responseMessage: 
   'Success' }
   And match each $.clauses..responseMessage == 'Success'
   And match each $..predicate != null
   And match each $..predicate == '#present'
   And match each $..predicate == '#regex [^0-9]+[0-9]*$'
   And match $..predicate contains Data.clauses.subject

   Examples: 
   |Data!                                               |
   |'{"clauses":[{"subject":"XXXX","predicate":"999999"}, 
   {"subject":"XXXXX","predicate":"99999"}]}'|
Run Code Online (Sandbox Code Playgroud)

我想要做的是在And match $..predicate contains Data.clauses.subject

那可能吗?

Pet*_*mas 5

是的,如果Data定义为变量,则很有可能。但请注意,这$..predicate将始终是一个 JSON 数组:https : //github.com/intuit/karate#get-plus-index

如果您需要帮助,请创建一个适当的简单工作示例。