是否有一种方法可以在空手道中的模拟功能文件中验证肥皂操作



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

我正在寻找下面的东西。

当方案路径匹配时(url);如果肥皂操作是操作名称或请求,则包含特定的XML标签;返回响应1;别的返回响应2;

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

是。为什么不。

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

上面的链接适用于HTTP-CLIENT,但是您可以使用相同的概念进行模拟。我建议的一种简单的方法是复制多个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')

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

方案:PathMatches('/foo')&&headercontains("肥皂"," myaction")

请参阅:https://intuit.github.io/karate/karate-netty/#headercontains

最新更新