向jest传递自定义参数

wgx48brx  于 2023-08-01  发布在  Jest
关注(0)|答案(5)|浏览(160)

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

jest

字符串
而且它运行所有的文件,这很好。我们需要类似于:

jest --env=local
 jest --env=dev
 jest --env=qa


这可能吗?测试文件应该是一样的,所有的测试工作原理都是一样的,我们只需要在不同的URL上运行它
我尝试自己解析命令,但jest不允许。如果我输入的命令与预定义的命令不同,则会失败,并显示:

● Unrecognized CLI Parameter:

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

  CLI Options Documentation:
  https://facebook.github.io/jest/docs/en/cli.html


我看到我可以添加自己的环境。我试过:
jest --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


但当我试图改变这些选择时,我真的迷失了。我找不到简单的东西

dev = {
    url = 'devUrl';
}
qa = {
    url = 'qaUrl';
}
etc.


谢谢你抽出时间

oogrdqng

oogrdqng1#

我遵循以下步骤并为我工作。希望这也能指导你
要求 * 将用户名和密码解析为命令行参数
指令码

"scripts": {
"loginTest": "jest tests/Login.test.js"
}

字符串
步骤 * 在js文件中我在下面添加了读取命令行参数

exports.USER_NAME = require("minimist")(process.argv.slice(2))["username"];


但要使用上面的方法,我必须按如下所示更新脚本

"scripts": {
"loginTest": "jest tests/Login.test.js --username=test@test.com",
}


然后我找到了下面的方法来将参数解析到脚本中。

npm run loginTest -- --username=test@test.com


有了这个,我就能够在不改变脚本的情况下实现我的要求

yvt65v4c

yvt65v4c2#

下面的命令行和解析可以设置环境/舞台URL等。

jest path/to/test.js '-stage=test'
# or...
npm test path/to/test.js -- -stage=test

个字符
这并不是说你应该在prod上运行测试,但它可以方便地进行拉取数据监控,例如检查端点状态:

expect((await request.get('/accounts/health')).body).toEqual(expected)

mrzz3bfm

mrzz3bfm3#

我有同样的要求:改变环境我找到了自己的解决方案,也许不是最好的解决方案,但它有效:jestjs -如何在ci中从cli参数化测试执行?

aor9mmx1

aor9mmx14#

上面“Seba Illingworth”的解决方案对我很有效。
“进程”中有一堆数据。我用这段代码检索了确切的命令行,我可以从中解析。

const myproc = process;
const myarg = process.argv;
const myenv = process.env;
const mycmd = myenv['npm_lifecycle_script'];

字符串

1mrurvl1

1mrurvl15#

这可以通过为每个环境使用不同的jest配置文件来实现,即jest.config.dev.jsjest.config.qa.js
然后在配置文件中可以设置全局变量:

module.exports = {
  ...,
  globals: {
    __ENV__: "DEV"
  }
};

字符串
这些全局变量,例如__ENV__,然后可以在测试代码中使用。然后使用jest -c jest.config.{env}.js运行每个不同环境的测试。

相关问题