摩卡测试中的共享功能
shared functionality in mocha tests
我将以下代码放在它自己的文件中,名为 shared.js
afterEach(function () {
// insert code
});
var foo;
beforeEach(function () {
foo = {
bar: []
};
});
exports = module.exports = {};
exports.foo = foo;
我希望 afterEach
和 beforeEach
在我的每个 mocha.js 测试中都是 运行。所以在每个测试文件中,我需要 shared.js
.
问题是 foo
在我的测试范围内似乎不可用。 foo.bar
未定义且不可访问。 beforeEach()
和 afterEach
挂钩 运行 很好,但我无法理解如何正确导出 foo
的范围。这可能更像是一个 Node.js 问题,而不是实际的 Mocha 问题。
问题是您无法修改导出的引用。在您的情况下,您正在导出 undefined
,因为 foo 未初始化。如果您使用空对象初始化 foo
,然后尝试将其重新分配给另一个 thing/object,它仍然无法工作,因为导出的引用仍然相同。
您唯一能做的就是像这样修改(变异)导出的对象:
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
})
})
我将以下代码放在它自己的文件中,名为 shared.js
afterEach(function () {
// insert code
});
var foo;
beforeEach(function () {
foo = {
bar: []
};
});
exports = module.exports = {};
exports.foo = foo;
我希望 afterEach
和 beforeEach
在我的每个 mocha.js 测试中都是 运行。所以在每个测试文件中,我需要 shared.js
.
问题是 foo
在我的测试范围内似乎不可用。 foo.bar
未定义且不可访问。 beforeEach()
和 afterEach
挂钩 运行 很好,但我无法理解如何正确导出 foo
的范围。这可能更像是一个 Node.js 问题,而不是实际的 Mocha 问题。
问题是您无法修改导出的引用。在您的情况下,您正在导出 undefined
,因为 foo 未初始化。如果您使用空对象初始化 foo
,然后尝试将其重新分配给另一个 thing/object,它仍然无法工作,因为导出的引用仍然相同。
您唯一能做的就是像这样修改(变异)导出的对象:
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
})
})