如何将共享变量添加到chakram?

时间:2017-08-11 09:51:22

标签: mocha resteasy restful-url

我正在使用chakram + mocha。 如何在所有测试中使用共享变量?

例如,我想在测试中使用变量API_PATH="http://example.com/v1/"。并且在运行测试期间可以更改此变量。所以,我的测试看起来像这样。

var response = chakram.get(API_PATH + "products");
expect(response).to.have.status(200);

例如,量角器的conf.js参数为baseUrl。运行测试看起来像量角器conf.js --baseUrl http://example.com/

2 个答案:

答案 0 :(得分:0)

你到目前为止尝试了什么?您是否尝试使用beforeEach重新初始化您正在使用的对象?您可以在测试之外声明共享变量。

编辑:添加杰里所说的细节: 如果希望在同一测试中重用所有变量,则必须使它们成为全局变量。见下面的例子

///include dependencies
var assert = require('assert'),
    chai = require('chai'),
    expect = chai.expect,
    chakram = require('chakram');

//INIT GLOBAL VARAIBLES FOR within the same test
var testObj,
    dummyData = {
        user: 'John Kim',
        lastSeenOnline: 'Wed August 11  12:05 2017'
    };

describe ('#User', function () {
    beforeEach(function () {
        //init what the object contains
        testObj = new DataStore(data, ContainerStore);
    });

    it ('#Should return the name of the user', function () {
        assert.equal(testObj.get('user'), dummyData.user);
    });

    it("should offer simple HTTP request capabilities", function () {
        return chakram.get("http://httpbin.org/get");
    });
});

注意:我使用react,但这是一个例子。我们假设ContainerStore包含一个方法,该方法具有get()方法,该方法只获取JSON对象的值。您可以在不同的describe块中多次使用testObj,因为它是在测试之外声明的。但是你应该记得总是在beforeEach()中重新初始化你的tesObj;否则,您可能会冒个人测试的风险。有些情况下你不必初始化beforeEach(),它是可选的。

答案 1 :(得分:0)

例如config.js

module.exports = { 
    "baseUrl": "http://example.com/", 
    "googleUrl":  "http://www.google.com.tr/"
  }; 

并在javascript代码中使用:

let config = require('/config'); 

describle("test describle", () => {

   it("test", () => {
      chakram.get(config.baseUrl + "products");   //for example use
   })
})