【问题标题】:Stub require in node js节点js中的存根需要
【发布时间】:2017-02-03 17:22:43
【问题描述】:

有没有办法使用sinon.jsrequire 存根到node js 中?

例如,我有一些文件:

const myModule = require('awesomeModule');

我想在我的测试中有这样的存根:

myRequireStub.withArgs('awesomModule').throws(new Error('some error'));

【问题讨论】:

    标签: node.js require sinon


    【解决方案1】:

    根据您的使用情况,最好使用诸如mockerymock-require 之类的库。但是我需要一种方法来存根 所有 对 require 的调用,所以这就是我想出的:

    const _module = require('module');
    
    let require = sinon.stub(_module, '_load');
    
    //return a function that returns a function
    require.returns(() => { return () => {}; });
    
    //run code that calls require
    
    require.restore();
    
    assert(require.calledWith('module-name'));
    

    【讨论】:

      【解决方案2】:

      这行得通:

      const sinon = require('sinon');
      
      let myRequireStub = sinon.stub(module, 'require');
      
      myRequireStub.withArgs('awesomeModule').throws(new Error('some error'));
      
      const myModule = require('awesomeModule');
      // Error: some error
      

      但是,通过 stubing require 几乎会破坏加载模块的能力,所以我不确定这有多大用处。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-24
        • 1970-01-01
        • 1970-01-01
        • 2016-03-01
        • 2019-09-29
        • 2018-03-13
        • 2015-12-31
        • 1970-01-01
        相关资源
        最近更新 更多