我正在使用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/
答案 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
})
})