我们的客户需要通过简单的命令运行整个测试电池,但他还需要能够使用参数更改环境。 目前我们运行:
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.
感谢您的时间。
答案 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)
答案 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)