Javascript mocha测试中的共享功能
我将以下代码放在它自己的名为Javascript mocha测试中的共享功能,javascript,node.js,mocha.js,Javascript,Node.js,Mocha.js,我将以下代码放在它自己的名为shared.js的文件中 afterEach(function () { // insert code }); var foo; beforeEach(function () { foo = { bar: [] }; }); exports = module.exports = {}; exports.foo = foo; 我希望在我的每个mocha.js测试中都能运行后和前。所以在每个测试文件中,我都需要shared.js 问题是fo
shared.js的文件中
afterEach(function () {
// insert code
});
var foo;
beforeEach(function () {
foo = {
bar: []
};
});
exports = module.exports = {};
exports.foo = foo;
我希望在我的每个mocha.js测试中都能运行后
和前
。所以在每个测试文件中,我都需要shared.js
问题是foo
似乎不在我的测试范围内<代码>食品条
未定义且无法访问。beforeach()
和afterEach
钩子运行得很好,但是我很难理解如何正确导出foo
的范围。这可能是Node.js的问题,而不是实际的摩卡问题 问题在于无法修改导出的引用。在您的例子中,您正在导出未定义的
,因为foo未初始化。如果您使用空对象初始化foo
,然后尝试将其重新分配给不同的对象/对象,它仍然无法工作,因为导出的引用仍然相同
您唯一能做的就是修改(变异)导出的对象,如下所示:
afterEach(function () {
// insert code
});
var foo = {};
beforeEach(function () {
foo.bar = [];
});
exports = module.exports = {};
exports.foo = foo;
问题是无法修改导出的引用。在您的例子中,您正在导出未定义的
,因为foo未初始化。如果您使用空对象初始化foo
,然后尝试将其重新分配给不同的对象/对象,它仍然无法工作,因为导出的引用仍然相同
您唯一能做的就是修改(变异)导出的对象,如下所示:
afterEach(function () {
// insert code
});
var foo = {};
beforeEach(function () {
foo.bar = [];
});
exports = module.exports = {};
exports.foo = foo;
如果您想要特定于每个测试上下文的内容,可以执行以下操作:
afterEach(function () {
// insert code
});
beforeEach(function () {
this.foo = [];
});
exports = module.exports = {};
然后,每个测试都可以访问自己的this.foo
:
describe('myTest', function() {
it('should do something', function() {
this.foo.push("1"); // same 'this' as from beforeEach
// ...insert code
})
})
如果您想要特定于每个测试上下文的内容,可以执行以下操作:
afterEach(function () {
// insert code
});
beforeEach(function () {
this.foo = [];
});
exports = module.exports = {};
然后,每个测试都可以访问自己的this.foo
:
describe('myTest', function() {
it('should do something', function() {
this.foo.push("1"); // same 'this' as from beforeEach
// ...insert code
})
})
如果
foo.bar
最终可以在我要求的任何文件中使用?因为我试图foo.bar.push({})代码>在我的测试中,需要此共享文件且我得到的foo未定义
@randombits您需要将所需结果分配给变量才能访问导出的数据。e、 g.var shared=require(“./shared”)
然后您可以通过shared.foo
访问模块中的foo。那么foo.bar
最终是否应该在我需要的任何文件中可用?因为我试图foo.bar.push({})代码>在我的测试中,需要此共享文件且我得到的foo未定义
@randombits您需要将所需结果分配给变量才能访问导出的数据。e、 g.var shared=require(“./shared”)
然后您可以通过shared.foo
访问模块中的foo。