有没有办法验证空手道中模拟功能文件中的肥皂动作?

时间:2019-02-28 20:17:36

标签: karate

我有一个模拟包含多个肥皂动作的肥皂服务的方案。每个肥皂动作的响应都不同。有没有办法在同一个模拟功能文件中定义所有这些内容?

我正在寻找类似下面的内容。

当场景路径匹配(URL)时; 如果soap动作是操作名称或请求包含特定的xml标签; 返回响应1; 其他 返回响应2;

2 个答案:

答案 0 :(得分:1)

  

是否可以在同一个模拟功能文件中定义所有这些内容?

是的。为什么不呢?

空手道的卖点是,您可以将任何复杂的逻辑表示为JavaScript表达式。请参考有关条件逻辑的本节以获取想法:https://github.com/intuit/karate#conditional-logic

上面的链接用于http客户端,但是您可以对模拟使用相同的概念。我推荐的一种简单方法是重复多个Scenario:节,也许pathMatches()将被重复,但可读性很强。

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

Scenario: pathMatches('/foo') && requestHeaders['SOAPAction'][0] == 'myaction'

您还可以在Background:

中创建一个辅助函数
Background:
  * def isAction = function(a){ var tmp = requestHeaders['SOAPAction']; return tmp ? tmp[0] == a : null }

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

答案 1 :(得分:0)

您也可以使用 headerContains() 函数。

场景:pathMatches('/foo') && headerContains('SOAPAction','myaction')

见:https://intuit.github.io/karate/karate-netty/#headercontains