如何在命令行中传递环境变量并动态地 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'

希望对您有所帮助