使用本地模块在meteor.js中与sinon.stub进行存根

时间:2018-04-17 23:36:19

标签: node.js meteor sinon stub

我无法与sinon进行基本的衔接,进行单元测试。当最终调用stubbed方法时,它调用的是真实方法而不是存根版本。

我已经创建了一个简单的版本来说明我正在处理的问题。我正在运行meteor 1.6.1并使用命令meteortesting使用meteor test --once --driver-package meteortesting:mocha包,以下文件都在/server目录中。我在被存根的模块上使用module.exports而不是导出,因为会抛出错误(单独的错误,import * as foo from './file'应该有效)。

有趣的是,如果我使用导出默认值导出calc-module.js,存根可以正常工作,问题是我在一个大型生产应用程序中工作,并且我希望避免使用导出默认值仅用于存根目的

我在节点8中尝试了几乎完全相同的代码,它运行正常。

//calc-module.test.js
import { expect } from 'chai';
import { runAdd5 } from './wrappers';
import calcModule from  './calc-module';
import sinon from 'sinon';

describe('calcModule', () => {
    before(() => {
        sinon.stub(calcModule, 'add5').callsFake((number) => {
            return number
        });
    });
    it('stubbed add5 causes function to not add anything', () => {
        const result = runAdd5(0)
        expect(result).to.eql(0)
    });
});


//calc-module.js
const add5 = (number) => {
    return number + 5
}

module.exports = {
    add5
}

//wrappers.js
import { add5 } from './calc-module';

const runAdd5 = (number) => {
    return add5(number)
};

export {
    runAdd5
};

0 个答案:

没有答案