我将以下代码放在名为shared.js
afterEach(function () {
// insert code
});
var foo;
beforeEach(function () {
foo = {
bar: []
};
});
exports = module.exports = {};
exports.foo = foo;
我希望在每次mocha.js测试中运行afterEach
和beforeEach
。所以在每个测试文件中,我都需要shared.js
。
问题是我的测试范围内似乎没有foo
。 foo.bar
未定义且无法访问。 beforeEach()
和afterEach
挂钩运行正常,但我无法理解如何正确导出foo
的范围。这可能更像是一个Node.js问题而不是实际的Mocha问题。
答案 0 :(得分:4)
问题是您无法修改导出的引用。在您的情况下,您正在导出/usr/local/src/scores.txt
,因为foo未初始化。如果使用空对象初始化undefined
并稍后尝试将其重新分配给不同的对象/对象,则它仍然无效,因为导出的引用仍然相同。
您唯一能做的就是修改(变异)导出的对象,如下所示:
foo
答案 1 :(得分:0)
如果您想要特定于每个测试的上下文的内容,您可以执行以下操作:
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
})
})