将自定义参数传递给 jest

Mat*_*tti 7 jestjs

我们的客户需要使用一个简单的命令来运行整个测试电池,但他还需要能够使用参数更改环境。目前我们运行:

jest
Run Code Online (Sandbox Code Playgroud)

它运行所有文件,这很好。我们需要这样的东西:

 jest --env=local
 jest --env=dev
 jest --env=qa
Run Code Online (Sandbox Code Playgroud)

这有可能吗?测试文件应该是一样的,所有的测试都是一样的,我们只需要在不同的url上运行

我试图自己解析命令,但玩笑不允许我。如果我输入的内容与预定义的命令不同,则会失败:

? Unrecognized CLI Parameter:

  Unrecognized option "a". Did you mean "$0"?

  CLI Options Documentation:
  https://facebook.github.io/jest/docs/en/cli.html
Run Code Online (Sandbox Code Playgroud)

我看到我可以添加自己的环境。我试过:

开玩笑 --env=qa

...查看其输出并打印:

? Validation Error:

  Test environment qa cannot be found. Make sure the testEnvironment configuration option points to an existing node module.

  Configuration Documentation:
  https://facebook.github.io/jest/docs/configuration.html
Run Code Online (Sandbox Code Playgroud)

但是当我尝试更改这些选项时,我真的很迷茫。我似乎找不到像这样简单的东西

dev = {
    url = 'devUrl';
}
qa = {
    url = 'qaUrl';
}
etc.
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间。

Jay*_*ath 4

我按照以下步骤为我工作。希望这也能指导您

要求 * 将用户名和密码解析为命令行参数
脚本

"scripts": {
"loginTest": "jest tests/Login.test.js"
}
Run Code Online (Sandbox Code Playgroud)

步骤 * 在 js 文件中,我添加了下面的内容来读取命令行参数

exports.USER_NAME = require("minimist")(process.argv.slice(2))["username"];
Run Code Online (Sandbox Code Playgroud)

但要使用上述方法,我必须按如下方式更新脚本

"scripts": {
"loginTest": "jest tests/Login.test.js --username=test@test.com",
}
Run Code Online (Sandbox Code Playgroud)

然后我发现下面的方法将参数解析到脚本中。

npm run loginTest -- --username=test@test.com
Run Code Online (Sandbox Code Playgroud)

这样,我就可以在不更改脚本的情况下实现我的要求

  • 您没有从笑话中收到“无法识别的选项”错误吗?我正在做类似的事情 (3认同)