mocha测试中的共享功能

时间:2016-07-19 20:29:54

标签: javascript node.js mocha

我将以下代码放在名为shared.js

的文件中
afterEach(function () {
  // insert code 
});

var foo;

beforeEach(function () {
  foo = {
    bar: []
  };
});

exports = module.exports = {};
exports.foo = foo;

我希望在每次mocha.js测试中运行afterEachbeforeEach。所以在每个测试文件中,我都需要shared.js

问题是我的测试范围内似乎没有foofoo.bar未定义且无法访问。 beforeEach()afterEach挂钩运行正常,但我无法理解如何正确导出foo的范围。这可能更像是一个Node.js问题而不是实际的Mocha问题。

2 个答案:

答案 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
  })
})