在空手道 API 模拟中,我没有按预期工作

2023-12-03

我正在探索 Karate API double(模拟)以进行集成测试。对于以下场景,我没有得到预期的嘲笑响应。我们将不胜感激您的帮助。

我的设置:1.空手道模拟服务器在端口上使用路径匹配规则8001: http://本地主机:8001(工作,针对“/cat”和一些测试调用进行验证) 2.我自己的应用程序是从端口上的docker启动的8080。 Docker 也暴露了 8001 端口。

模拟案例: 1. My 应用程序 REST 调用暴露给所有用户http://localhost:8080/service/v1/findUser。这个暴露的API,潜在的呼叫其他人休息通话 http://dev-STG/userservice/v1/findUser它实际上给出了 JSON 响应。因此,我想模拟底层 API 调用并相应地验证我的 API 行为。

尝试的步骤:1. 现在,在我的应用程序配置中,m 替换对空手道模拟服务器的实际底层 API 调用(http://localhost:8001/userservice/v1/findUser)。然后构建并构建了我的应用程序 docker。

  1. 在空手道中,我定义了测试,例如“testIntgrtn.feature”,它调用我的应用程序 API "http://localhost:8080/service/v1/findUser”和空手道模拟服务器并使用路径匹配“/userservice/v1/findUser”进行设置。
  2. 执行“testIntgrtn.feature”空手道后,不会嘲笑底层调用(http://localhost:8001/userservice/v1/findUser).
  3. 现在,在“testIntgrtn.feature”文件中,我将应用程序 URL 更改为基础 REST URL,即(http://localhost:8001/userservice/v1/findUser)然后嘲笑就会像魅力一样起作用。

    我不明白为什么底层API调用在这里不会被嘲笑吗?我在这里错过了什么吗? 此外,在空手道中,我们可以监控所有 REST 调用(例如 cypress 模拟)。

感谢这个精彩的框架。这对于编写自动化案例来说很直观。


空手道无法自动拦截呼叫。

推荐的方法是当您启动运行在以下位置的应用程序时localhost:8080您更改配置,以便不用调用http://dev-stg/userservice/v1/findUser它称之为类似的东西http://localhost:8001/v1/findUser。这是大多数团队所做的,而且很简单,因为无论如何您都应该将外部 URL 定义为application.properties(或同等)作为最佳实践。

例如,在 Spring Boot 中覆盖应用程序属性非常容易,您可以通过命令行执行此操作:https://stackoverflow.com/a/37053004/143475

如果需要,您可以动态地为模拟提供端口。因此,您的单元测试可以首先启动模拟,获取端口,然后启动服务器。您可以在空手道文档中找到详细信息。

综上所述,如果您能够在应用程序之前更改(系统)HTTP 代理,localhost:8080启动后,您也许可以在不修改配置的情况下执行此操作。 (但这很棘手,所以我推荐上面解释的方法。)因此在这种情况下,Karate 实际上可以“拦截”应用程序在localhost:8080 makes.

请参阅此处表中的倒数第二行 (5a):https://github.com/intuit/karate/tree/master/karate-netty#consumer-provider-example

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在空手道 API 模拟中,我没有按预期工作 的相关文章

随机推荐

  • MATLAB:无需使用现有函数即可进行 10 倍交叉验证

    我有一个矩阵 我想在 MatLab 中你称之为结构 或数据结构 data 150x4 double labels 150x1 double 这是我的矩阵 数据看起来假设我确实使用矩阵名称加载我的文件 5 1000 3 5000 1 4000
  • 使用 jQuery 读取客户端剪贴板?

    是否可以使用 jQuery 获取 读取客户端的剪贴板 我需要获取电子表格的信息并将该信息粘贴到 jqGrid 网络网格中 好吧 根据对于这个类似的问题仅用 JavaScript 是无法完成的 这很好 因为这将是一个重大的安全风险 您需要一个
  • 获取应用程序Windows的完整目录[重复]

    这个问题在这里已经有答案了 可能的重复 获取可执行文件的路径 我有一个 C 应用程序 如何获取我的完整目录 该应用程序的 exe 文件存在的位置 编辑 操作系统 Windows Windows WCHAR path MAX PATH Get
  • MySQL SELECT 最近几天?

    我正在使用 MYSQL 我知道有一个限制命令可以显示一定数量的结果 但我想知道 MySQL 是否只能显示最近 3 天或其他内容 就是想 Update 我使用 NOW 来存储时间 用于三天前的约会 WHERE t date gt DATE A
  • 从 openjson SQL Server 2016 中的嵌套数组中删除对象

    我想删除 AttributeName Manufacturer 来自 SQL Server 2016 中的以下 json declare json nvarchar max Type G GroupBy Attributes Attribu
  • 卡住“命令 /usr/bin/codesign 失败,退出代码 1 ”错误

    在我与 xcode 3 2 5 并行安装 xcode 4 2 后 我的所有项目中都出现以下错误 当我为测试器创建临时捆绑包时 我收到错误 我该如何解决这个问题 我浏览了以下博客 但找不到任何解决方案 命令 usr bin codesign
  • Ios8 中的 UIActionsheet

    我已经在我的项目中实现了行动表 部署了目标 ios7 更少的行动表工作正常 Ios8 中的 UIActionsheet 与其他版本的 Ios 工作方式不同 我如何让它正常工作 Thanks UIActionSheet 从 iOS8 开始已弃
  • 定义 char a[5] 和 char (*a)[5] 有什么区别? [复制]

    这个问题在这里已经有答案了 我只是想确定一下C语言中 a 5 和 a 5 之间的区别 我知道 a 5 意味着数组 a 可以有五个元素 每个元素都是指针 所以 char p ptr1 char p2 ptr2 char a 5 p p2 这确
  • 在 Android 中限制离线地图上的滚动

    我从 osmdroid 那里得到了这些代码或补丁 我决定向你们寻求帮助 因为我没有足够的知识来结合这些代码来解决我的问题 离线地图上的滚动限制 我在网上搜索并修改了教程 老实说 我尝试修改这些代码 但没有发现任何进展 基本上我有一张来自 m
  • 编译并运行这个java程序

    如何编译并运行以下程序 测试1 java package A public class Test1 public int a 1 测试2 java package B import A public class Test2 public s
  • 为什么 DOM 文档实际上有效时会显示为 null?

    在我的方法之一中 我有一个 DOMorg w3c dom Document实例化并且似乎已正确初始化 因为当我使用以下命令转储它时 LOG info DOM doc getDocumentElement getTextContent 它输出
  • 将 .hpp 文件类型添加到 Visual Studio

    默认情况下 Visual Studio 仅支持在创建新类时包含 h 或 cpp 文件 不过 我知道我可以轻松选择 h 并将其重命名为 hpp 以实现我正在寻找的新扩展名 但是 我想为此列表创建一个新的模板文件类型 将 hpp 文件显示为选项
  • 独立数字正则表达式?

    我目前使用这个正则表达式 d 我可以得到2个字符串的问题 2112343 和很多 4 99 OR 4 99 和大量 2112343 我从两者都得到了这个 2112343 4 99 我只需要得到2112343 我怎样才能做到这一点 使用环视
  • imshow:标签为图像索引的任意函数

    imshow根据其列索引 x 轴 和行索引 y 轴 绘制矩阵 我希望轴标签不是索引 而是索引的任意函数 例如音调检测 imshow A aspect auto where A shape 88200 8 在 x 轴上 显示大约几个刻度 11
  • 创建一个最初为空但允许用户动态添加行的 Java 表模型

    我正在制作一个应用程序 其主要功能包含在 JTable 中 我需要使用 addRow 方法创建一个随附的表模型 用户在窗口中输入详细信息 然后单击 JButton 后 数据将被带入一个数组 该数组被传递到 addRow 方法以添加到表中 然
  • 带有 .click 方法的 jQuery 流沙插件

    我正在尝试将此 click 函数添加到我使用 jQuery 的流沙插件排序的每个图像中 li img click function var verticalCenter window height popupContent height 2
  • ShortestPath 找不到任何没有最大跳数限制的路径

    在我的图中 顶点 5 和 36 之间有一条路径 但是当我运行查询时 match n Id 5 m Id 36 p shortestPath n gt m return length p 我得到 0 行返回 当我向路径添加最大跳数限制时 我得
  • 不使用 AJAX 加载 XML 文件

    我想将静态 XML 文件加载到 HTML 中并在没有 AJAX 请求的情况下处理它 我不想发出 AJAX 请求 因为当在没有网络服务器的情况下查看该 html 文件时 这是我们的要求 Chrome 抛出以下错误并停止播放 XMLHttpRe
  • Android:如何以编程方式设置布局的大小

    作为 Android 应用程序的一部分 我正在构建一个按钮集 这些按钮是一组嵌套的 LinearLayout 的一部分 使用权重 我可以根据包含父 LinearLayout 的大小自动调整集合的大小 这个想法是 根据屏幕的像素数和密度 将包
  • 在空手道 API 模拟中,我没有按预期工作

    我正在探索 Karate API double 模拟 以进行集成测试 对于以下场景 我没有得到预期的嘲笑响应 我们将不胜感激您的帮助 我的设置 1 空手道模拟服务器在端口上使用路径匹配规则8001 http 本地主机 8001 工作 针对