How to mock dependencies for unit tests with ES6 Modules

后端 未结 5 1328
一整个雨季
一整个雨季 2020-12-02 11:58

I\'m trying to fiddle with Ecmascript 6 modules using webpack + traceur to transpile to ES5 CommonJS, but I\'m having trouble successfully unit testing them.

I tried

5条回答
  •  一个人的身影
    2020-12-02 12:30

    Hi you could use proxyquire:

    import assert from 'assert';
    import sinon from 'sinon';
    import Proxyquire from 'proxyquire';
    
    let proxyquire = Proxyquire.noCallThru(),
        pathModelLoader = './model_loader';
    
    describe('ModelLoader module.', () => {
        it('Should load all models.', () => {
            let fs, modelLoader, ModelLoader, spy, path;
            fs = {
                readdirSync(path) {
                    return ['user.js'];
                }
            };
            path = {
                parse(data) {
                    return {name: 'user'};
                }
            };
            ModelLoader = proxyquire(pathModelLoader, {'fs': fs, 'path': path});
            modelLoader = new ModelLoader.default();
            spy = sinon.spy(modelLoader, 'loadModels');
            modelLoader.loadModels();
            assert(spy.called);
        });
    });
    

提交回复
热议问题