如何在命令行中传递环境变量并动态地 select 基于 url 的变量?
How to pass the environment variables in command line and dynamically select the variables based on the url?
我正在使用 mocha 和 Supertest 编写休息测试 api。
我有不止一个环境,一些数据因环境而异。例如,如果我 select 暂存环境,则数据与 qa 环境不同。特别是我想 select 命令行中的环境。
请检查以下测试。
const request = require("supertest");
const express = require("express");
const expect = require("chai").expect;
const flush = require('flush-cache');
var Token;
var AddID;
var stage ="http://www.stage-xyz.com";
var qa = "http://www.qa-xyz.com";
var methods = {
"login":"/login?",
"address":"/address"
}
var login = {
"user":"abc@abc.com",
"password":"xyz"
}
var add = {
"no": "121",
"streetaddress": "covey street",
"postalcode":"12345",
"province":"NY"
}
beforeEach(function () {
flush();
});
describe('POST /Authenticate', function() {
it('Retrieve Token', function(done) {
request(qa).post(methods.login)
.set('Content-Type','application/json')
.send(login)
.expect('Content-Type', /json/)
.expect(200)
.end(function(err,res) {
if (err) return done(err);
Token = res.body.token;
console.log(res.body);
expect(res).to.have.property('status').equals(200);
done();
});
});
it('address', function(done) {
request(qa).post(methods.perm)
.set('Authentication',Token)
.set('Content-Type','application/json')
.send(add)
.expect('Content-Type',/json/)
.expect(200)
.end(function(err,res) {
if (err) return done(err);
console.log(res.body);
AddID = res.body.id;
expect(res).to.have.property('status').equals(200);
expect(true).equals(Number.isInteger(AddID));
done();
});
});
});
然而,最终我想在一个名为 config.please 的单独文件中提供如下所示的输入,帮助我创建一个配置模块来传递环境 url 和 select 数据基于此。
var env = {
stage:{
url:"http://www.stage-xyz.com"
login : {
"user":"abc@abc.com",
"password":"xyz",
}
add : {
"no": "121",
"streetaddress": "covey street",
"postalcode":"12345",
"province":"NY"
}
}
qa:{
url:"http://www.qa-xyz.com""
login : {
"user":"abc@abc.com",
"password":"xyz"
}
add : {
"no": "121",
"streetaddress": "covey street",
"postalcode":"12345",
"province":"NY"
}
}
}
在我的项目中,我使用 config 为我的环境定义配置。它真的很好用。
我的项目文件夹:
- config
- default.yaml
- staging.yaml
- qa.yaml
- test
您也可以使用 json 格式。
要使其正常工作,您还必须更改源文件以使用配置中定义的值
const config = require('config');
const user = config.get('login.user');
到 运行 带有 Mocha 的测试文件,例如目标暂存环境
$ NODE_ENV=staging mocha 'test/**/*test.js'
希望对您有所帮助
我正在使用 mocha 和 Supertest 编写休息测试 api。 我有不止一个环境,一些数据因环境而异。例如,如果我 select 暂存环境,则数据与 qa 环境不同。特别是我想 select 命令行中的环境。
请检查以下测试。
const request = require("supertest");
const express = require("express");
const expect = require("chai").expect;
const flush = require('flush-cache');
var Token;
var AddID;
var stage ="http://www.stage-xyz.com";
var qa = "http://www.qa-xyz.com";
var methods = {
"login":"/login?",
"address":"/address"
}
var login = {
"user":"abc@abc.com",
"password":"xyz"
}
var add = {
"no": "121",
"streetaddress": "covey street",
"postalcode":"12345",
"province":"NY"
}
beforeEach(function () {
flush();
});
describe('POST /Authenticate', function() {
it('Retrieve Token', function(done) {
request(qa).post(methods.login)
.set('Content-Type','application/json')
.send(login)
.expect('Content-Type', /json/)
.expect(200)
.end(function(err,res) {
if (err) return done(err);
Token = res.body.token;
console.log(res.body);
expect(res).to.have.property('status').equals(200);
done();
});
});
it('address', function(done) {
request(qa).post(methods.perm)
.set('Authentication',Token)
.set('Content-Type','application/json')
.send(add)
.expect('Content-Type',/json/)
.expect(200)
.end(function(err,res) {
if (err) return done(err);
console.log(res.body);
AddID = res.body.id;
expect(res).to.have.property('status').equals(200);
expect(true).equals(Number.isInteger(AddID));
done();
});
});
});
然而,最终我想在一个名为 config.please 的单独文件中提供如下所示的输入,帮助我创建一个配置模块来传递环境 url 和 select 数据基于此。
var env = {
stage:{
url:"http://www.stage-xyz.com"
login : {
"user":"abc@abc.com",
"password":"xyz",
}
add : {
"no": "121",
"streetaddress": "covey street",
"postalcode":"12345",
"province":"NY"
}
}
qa:{
url:"http://www.qa-xyz.com""
login : {
"user":"abc@abc.com",
"password":"xyz"
}
add : {
"no": "121",
"streetaddress": "covey street",
"postalcode":"12345",
"province":"NY"
}
}
}
在我的项目中,我使用 config 为我的环境定义配置。它真的很好用。
我的项目文件夹:
- config
- default.yaml
- staging.yaml
- qa.yaml
- test
您也可以使用 json 格式。
要使其正常工作,您还必须更改源文件以使用配置中定义的值
const config = require('config');
const user = config.get('login.user');
到 运行 带有 Mocha 的测试文件,例如目标暂存环境
$ NODE_ENV=staging mocha 'test/**/*test.js'
希望对您有所帮助