我有一个场景,可以模拟包含多个肥皂操作的肥皂服务。每个肥皂作用的响应都不同。有没有办法在同一模拟功能文件中定义所有这些?
我正在寻找下面的东西。
当方案路径匹配时(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