如何在单元测试期间仅重新连接一些对象参数?

时间:2016-08-29 15:27:23

标签: javascript node.js unit-testing mocha

我有一个包含对象的模块。我想只重新连接一些对象的参数。我们来说我的模块&module; js'看起来像这样:

var obj = {
  param_A: 'valueA',
  param_B: 'valueB',
  param_C: 'valueC'
}

在测试文件中,我导入模块并使用重新连接。

var rewire = require('rewire');
var module = rewire('../module.js');

describe('Unit-Test', function () {
  beforeEach(function () {
    module.__set__({
      'obj': { param_B: 'newValueB' }
    });
  });

...

});

现在我已经覆盖整个对象,参数A和C不再存在。如何保留它们?我想到的唯一一件事是这样的

module.__set__({
  'obj': {
    param_A: module.obj.param_A,
    param_B: 'newValueB',
    param_C: module.obj.param_C
  }
}

但我觉得必须有更好的方法。

1 个答案:

答案 0 :(得分:-1)

我可以建议你看一下require中的' with '功能。 github/jhnns/rewire

myModule.__with__({
    port: 3000
})(function () {
    // within this function port is 3000
});
// now port is the previous value again