【发布时间】:2021-03-30 21:17:31
【问题描述】:
我正在探索用于集成测试的 Karate API double(模拟)。对于以下场景,我没有得到预期的模拟响应。我们将不胜感激。
我的设置: 1. 空手道模拟服务器在端口 8001 上使用 pathMatches 规则:http://localhost:8001(工作,针对“/cat”和一些测试调用进行验证) 2. 我自己的应用程序是从端口 8080 上的 docker 启动的。从 Docker 也暴露了 8001 端口。
模拟案例: 1. 我的 应用程序REST调用暴露给所有用户http://localhost:8080/service/v1/findUser。这个暴露的 API,底层 调用其他 REST 调用 http://dev-STG/userservice/v1/findUser,它实际上给出了 JSON 响应。因此,我想模拟底层 API 调用并相应地验证我的 API 行为。
尝试的步骤: 1. 现在,在我的应用程序配置中,将实际底层 API 调用替换为空手道模拟服务器 (http://localhost:8001/userservice/v1/findUser)。然后确实构建了我的应用程序 docker。
- 在空手道中,我定义了测试,例如“testIntgrtn.feature”,它调用我的应用程序 API“http://localhost:8080/service/v1/findUser”和空手道模拟服务器并使用路径匹配“/userservice/v1/findUser”进行设置。
- 在执行“testIntgrtn.feature”后,空手道不模拟底层调用 (http://localhost:8001/userservice/v1/findUser)。
-
现在,在“testIntgrtn.feature”文件中,我将我的应用程序 URL 更改为底层 REST URL,即 (http://localhost:8001/userservice/v1/findUser),然后模拟将像魅力一样工作。
我不明白为什么底层 API 调用没有在这里被嘲笑?我在这里错过了什么吗? 此外,在空手道中,我们可以监控所有 REST 调用(如 cypress 模拟)。
感谢这个精彩的框架。这对于编写自动化案例很直观。
【问题讨论】: