testing - karate.callSingle 在 karate-config.js 中找不到 .feature 文件
问题描述
我正在使用 karate v0.9.6,它是一个很棒的工具。我有超过 1000 个场景,每个场景都需要令牌才能工作,所以我在 karate-config.js 中使用 callSingle 来创建和缓存令牌。我使用独立的 jar 文件。
我的 karate-config.js 的一部分:
var auth_cfg = {
server: env,
credentials: karate.properties['credentials']};
var result = karate.callSingle('classpath:credentials/generate_tokens.feature', auth_cfg);
我正在使用这样的 .sh 文件:
rm -rf target &&
java -Xmx2048m \
-Dlogback.configurationFile=cfg/logs_debug.xml \
-jar \
-Dcredentials=data.json \
karate-1.0.1.jar -e https://my-server/ \
--tags ~fixme \
--tags ~ignore \
--threads 4 \
features/services/simple_plan.feature
而且,它在 v.0.9.6 上长时间运行良好。但是,当我尝试升级到 v 1.0 或 1.0.1 时,出现错误:
org.graalvm.polyglot.PolyglotException: not found: credentials/generate_tokens.feature
我发现了这个问题:https ://github.com/intuit/karate/issues/1515
但是示例对我不起作用。我正在尝试使用“文件:”和 karate.properties['karate.config.dir'] + '/features/auth/auth.feature'。总是我得到一个错误:
未找到:凭证/generate_tokens.feature
还有谁遇到过这个问题?
解决方案
正如您在 #1515 的讨论中所看到的 - 这就是为什么我们真的希望更多的人尝试 RC 版本并向我们提供反馈(我们为此花了几个月的时间)而不是等待 1.0。
您的情况似乎是您使用独立 JAR 和自定义 shell 脚本的边缘情况。
我的第一个建议是使用-w
标志。这是 1.0 中的一个新参数,它可以设置“当前工作目录”,但它应该在您的情况下正确默认。
第二个建议是为 JVM 设置类路径。将此用作参考:https ://stackoverflow.com/a/58398958/143475 - 一旦你这样做,classpath:
将按你的预期工作。
否则请遵循此过程:https ://github.com/intuit/karate/wiki/How-to-Submit-an-Issue - 我不得不说,除非你能帮助我们解决这个问题,否则你可能不得不继续0.9.6 一段时间。对不起。
推荐阅读
- android - 如何在 React Native 中使用来自服务器的 json 数据动态显示底部选项卡导航?
- ruby - 使用 double-bag-ftps gem 在 Ruby 中建立 FTPS 连接
- kotlin - 如何在使用当前父 Scope 的“暂停乐趣”中启动 Kotlin 协程?
- python - django 服务器启动时我应该在哪里启动一个新线程
- php - 我可以从一个页面中抛出多个 json 吗?
- ios - 如果我将我的应用下架销售,我的应用商店评论会怎样?
- python - 保留 + 和 . 的正确正则表达式语法是什么?从字符串中删除不匹配的字符时?
- php - PHP 7.1 XML domDocument 克隆节点和子节点
- go - 恐慌:最后一个参数需要是 http.HandlerFunc 类型
- javascript - 全球还是封闭?