Karate 有没有一种方法可以在空手道的模拟特性文件中验证soap操作?

Karate 有没有一种方法可以在空手道的模拟特性文件中验证soap操作?,karate,Karate,我有一个模拟包含多个soap操作的soap服务的场景。每个soap操作的响应都是不同的。有没有办法在同一个模拟特征文件中定义所有这些 我在找下面这样的东西 场景路径匹配时(url); 如果soap操作是操作名,或者请求包含特定的xml标记; 返回响应1; 其他的 返回响应2 有没有办法在同一个模拟特征文件中定义所有这些 对。为什么不呢 空手道的卖点在于,您可以将任何复杂的逻辑表示为JavaScript表达式。有关想法,请参阅本节“条件逻辑”: 上面的链接是针对http客户机的,但是您可以对模拟使

我有一个模拟包含多个soap操作的soap服务的场景。每个soap操作的响应都是不同的。有没有办法在同一个模拟特征文件中定义所有这些

我在找下面这样的东西

场景路径匹配时(url); 如果soap操作是操作名,或者请求包含特定的xml标记; 返回响应1; 其他的 返回响应2

有没有办法在同一个模拟特征文件中定义所有这些

对。为什么不呢

空手道的卖点在于,您可以将任何复杂的逻辑表示为JavaScript表达式。有关想法,请参阅本节“条件逻辑”:

上面的链接是针对http客户机的,但是您可以对模拟使用相同的概念。我推荐的一种简单方法是复制多个
场景:
部分,可能会重复
pathMatches()
,但它会非常可读

Scenario: pathMatches('/foo') && paramValue('client') != null
  # do something

Scenario: pathMatches('/foo') && requestHeaders['SOAPAction'][0] == 'myaction'
您还可以在
后台:

Background:
  * def isAction = function(a){ var tmp = requestHeaders['SOAPAction']; return tmp ? tmp[0] == a : null }

Scenario: pathMatches('/foo') && isAction('myaction')

您还可以使用headerContains()函数

场景:路径匹配('/foo')&&headerContains('SOAPAction','myaction'))


请参阅:

接受上一个问题的答案。这个问题有没有解决方案?