我使用功能文件在空手道中定义了一个模拟服务器,但我想添加更多逻辑。我发现现在支持使用 Java Script 定义模拟,这看起来对我的一些需求有很大帮助。但我遇到了关于如何向模拟发出请求的障碍:-(
我正在使用 karate-1.4.1 jarfile。我在 wsl2 中使用 Windows 11 和 Ubuntu。我在 Ubuntu 中运行模拟。我想从 Windows 向它发出请求。
当我使用 .js 定义启动模拟时,我无法从 Windows 调用模拟(不过我可以从 Ubuntu 进行调用 - 它正在运行并工作)。使用 .feature 定义启动模拟时,这不是问题。使用 .feature 定义,我可以愉快地从 Windows 向模拟发出请求。
启动模拟时,我注意到服务器设置位置有所不同 (
Serving HTTP at ...
)。
使用 .feature 文件运行:
java -cp karate-1.4.1.jar:. com.intuit.karate.Main -m mock.feature
这是我使用 .feature 文件运行模拟时的输出:
08:20:38.582 [armeria-boss-http-*:8080] INFO com.linecorp.armeria.server.Server - Serving HTTP at /0:0:0:0:0:0:0:0%0:8080 - http://127.0.0.1:8080/
使用 .js 文件运行:
java -cp karate-1.4.1.jar:. com.intuit.karate.Main -m mock.js
这是我使用 .js 文件运行模拟时的输出:
08:21:18.010 [armeria-boss-http-127.0.0.1:8080] INFO com.linecorp.armeria.server.Server - Serving HTTP at /127.0.0.1:8080 - http://127.0.0.1:8080/
我怀疑我可以在 Windows 11 中配置一些东西来解决这个问题(这里的任何帮助将不胜感激),但我不确定为什么在使用 .feature 文件启动模拟时事情会如此顺利,但是使用 .js 文件启动模拟时工作方式有所不同。
我刚刚意识到 JS 选项被设计为默认只允许来自 localhost 的连接。只是做出了修复此问题的承诺,这可能是不言自明的。
我猜现在大多数团队都是从 Java 代码开始 JS 模拟(并且在 Mac / Linux 上)。是的,我认为某些 Windows 设置可以工作,也许你可以搜索如何编辑
etc.conf
文件,不确定。
由于新版本可能需要一些时间,您认为可以使用Java API来启动模拟吗?它会是这样的: MockRunner.java - 另外你还可以调用
local(false)
构建器方法。