【问题标题】:How to rewire only some object parameters during unit testing?如何在单元测试期间仅重新连接一些对象参数?
【发布时间】:2016-08-29 15:27:23
【问题描述】:

我有一个包含对象的模块。我只想重新连接对象的一些参数。假设我的模块“module.js”如下所示:

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

在测试文件中,我导入模块并使用 rewire。

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
  }
}

但我觉得一定有更好的方法。

【问题讨论】:

  • 查看警告下关于点符号的评论:github.com/jhnns/rewire#caveats。不确定您的 obj 变量到底代表什么(以及您简化了多少示例),但这可能是仅重新连接 obj.param_B 的方法。

标签: javascript node.js unit-testing mocha.js


【解决方案1】:

我可以建议你看看 require 中的 'with' 函数。 github/jhnns/rewire

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 2020-08-24
    相关资源
    最近更新 更多