首页 > 解决方案 > 有没有办法在空手道的模拟功能文件中验证肥皂动作?

问题描述

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

我正在寻找类似下面的东西。

当场景路径匹配(url);如果任一soap 操作是操作名称或请求包含特定的xml 标记;返回响应 1;否则返回响应 2;

标签: karate

解决方案


有没有办法在同一个模拟功能文件中定义所有这些?

是的。为什么不。

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

上面的链接适用于 http-client,但您可以对 mock 使用相同的概念。我推荐的一个简单方法是复制多个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')

推荐阅读