如果我使用 JavaScript 模拟,为什么 Windows 无法向我的空手道模拟发出请求?

问题描述 投票:0回答:1

我使用功能文件在空手道中定义了一个模拟服务器,但我想添加更多逻辑。我发现现在支持使用 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 文件启动模拟时工作方式有所不同。

karate wsl-2
1个回答
0
投票

我刚刚意识到 JS 选项被设计为默认只允许来自 localhost 的连接。只是做出了修复此问题的承诺,这可能是不言自明的。

我猜现在大多数团队都是从 Java 代码开始 JS 模拟(并且在 Mac / Linux 上)。是的,我认为某些 Windows 设置可以工作,也许你可以搜索如何编辑

etc.conf
文件,不确定。

由于新版本可能需要一些时间,您认为可以使用Java API来启动模拟吗?它会是这样的: MockRunner.java - 另外你还可以调用

local(false)
构建器方法。

© www.soinside.com 2019 - 2024. All rights reserved.