karate - 有没有办法在空手道的模拟功能文件中验证肥皂动作?
问题描述
我有一个模拟包含多个肥皂动作的肥皂服务的场景。每个肥皂动作的反应都是不同的。有没有办法在同一个模拟功能文件中定义所有这些?
我正在寻找类似下面的东西。
当场景路径匹配(url);如果任一soap 操作是操作名称或请求包含特定的xml 标记;返回响应 1;否则返回响应 2;
解决方案
有没有办法在同一个模拟功能文件中定义所有这些?
是的。为什么不。
空手道的卖点是你可以将任何复杂的逻辑表达为 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')
推荐阅读
- r - R for 循环创建数据表
- authentication - 使用电子邮件进行身份验证时,NestJS 护照身份验证返回 401
- windows - 如何配置 CMakeLists 以使用 Windows 命令行编译器而不是 Visual Studio
- html - 为什么我的固定导航栏不适用于图像?
- node.js - Promise.all 仅在与 async/await 一起使用时返回已解决的 Promise
- javascript - Angular 获取 (...) 工具提示不是 Jquery 的功能
- java - 查找使用两个数组之间的交集
- python - Tensorflow 2.0:无法导入 tf.keras.utils.conv_utils
- c++ - 解释以下 C++ 程序的输出?
- iis - Octopus Deploy 对网站文件的权限