首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Proxyquire不覆盖导出函数

Proxyquire不覆盖导出函数
EN

Stack Overflow用户
提问于 2021-10-28 19:33:18
回答 1查看 605关注 0票数 0

我有一个类modules/handler.js,如下所示:

代码语言:javascript
复制
const {getCompany} = require('./helper');

module.exports = class Handler {
    constructor () {...}
    async init(){
        await getCompany(){
        ...
    }
}

它从文件getCompany导入函数modules/helper.js

代码语言:javascript
复制
exports.getCompany = async () => {
 // async calls
}

现在,在集成测试中,我想对getCompany方法进行存根,它应该只返回一个mockCompany。但是,proxyquire并没有对方法getCompany进行固执,而是调用真正的方法。测试:

代码语言:javascript
复制
const sinon = require('sinon');
const proxyquire = require("proxyquire");
const Handler = require('../modules/handler');

describe('...', () => {

    const getCompanyStub = sinon.stub();
    getCompanyStub.resolves({...});

    const test = proxyquire('../modules/handler.js'), {
      getCompany: getCompanyStub
    });

    it('...', async () => {
        const handler = new Handler();
        await handler.init(); // <- calls real method 
        ... 
    });
});

我也在没有sinon.stub的情况下尝试了它,其中proxyquire返回一个直接返回对象的函数,但是,这也不起作用。

我会非常感谢每一个指针。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-29 02:52:44

您所使用的Handler类是require函数所必需的,而不是proxyquire

handler.js

代码语言:javascript
复制
const { getCompany } = require('./helper');

module.exports = class Handler {
  async init() {
    await getCompany();
  }
};

helper.js

代码语言:javascript
复制
exports.getCompany = async () => {
  // async calls
};

handler.test.js

代码语言:javascript
复制
const sinon = require('sinon');
const proxyquire = require('proxyquire');

describe('69759888', () => {
  it('should pass', async () => {
    const getCompanyStub = sinon.stub().resolves({});
    const Handler = proxyquire('./handler', {
      './helper': {
        getCompany: getCompanyStub,
      },
    });
    const handler = new Handler();
    await handler.init();
  });
});

测试结果:

代码语言:javascript
复制
  69759888
    ✓ should pass (2478ms)


  1 passing (2s)

------------|---------|----------|---------|---------|-------------------
File        | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
------------|---------|----------|---------|---------|-------------------
All files   |     100 |      100 |     100 |     100 |                   
 handler.js |     100 |      100 |     100 |     100 |                   
 helper.js  |     100 |      100 |     100 |     100 |                   
------------|---------|----------|---------|---------|-------------------
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69759888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档