Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mocha测试中的共享功能_Javascript_Node.js_Mocha.js - Fatal编程技术网

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。