将自定义参数传递给jest

时间:2018-04-12 14:13:35

标签: jestjs

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

jest

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

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

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

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

● 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.

感谢您的时间。

3 个答案:

答案 0 :(得分:0)

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

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

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

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

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

但是要使用上述方法,我必须按如下方式更新脚本<​​/ p>

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

然后我发现了以下将参数解析为脚本的方法。

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

有了这个,我无需更改脚本就可以达到我的要求

答案 1 :(得分:0)

我有相同的要求:改变环境 我喜欢自己的解决方案, 也许不是最好的解决方案, 但它有效:jestjs - how to parametrize test execution from cli in ci?

答案 2 :(得分:0)

以下命令行和解析可以设置环境/阶段url等。

jest path/to/test.js '-stage=test'
# or...
npm test path/to/test.js -- -stage=test
// test.js
const stageArg = process.argv.filter((x) => x.startsWith('-stage='))[0]
const stage = stageArg ? stageArg.split('=')[1] : 'dev' // default
const apiUrl = stage === 'prod' ? 'https://api.mysite.com' : `https://api.${stage}.mysite.com`
const request = supertest(apiUrl)
// ...etc...

并非您应该在产品上运行测试,但是它对于诸如拉取数据监视之类的事情可能非常方便,例如检查端点状态:

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