Javascript 使用tape js模拟文档对象

Javascript 使用tape js模拟文档对象,javascript,unit-testing,Javascript,Unit Testing,我正在尝试单元测试一个模块(使用tapejs),该模块依赖于另一个使用document对象的模块,我得到“ReferenceError:document未定义” 我尝试proxyquire代理此依赖项,但它似乎没有任何作用 const store = proxyquire('../../../store/list-store', { '../config/paths': { createUrl: stub(), }, }); 有什么建议吗?使用proxyquire的noCallThru

我正在尝试单元测试一个模块(使用tapejs),该模块依赖于另一个使用document对象的模块,我得到“ReferenceError:document未定义”

我尝试proxyquire代理此依赖项,但它似乎没有任何作用

const store = proxyquire('../../../store/list-store', {
'../config/paths': {
    createUrl: stub(),
},
});

有什么建议吗?

使用proxyquire的
noCallThru
方法帮助我实现了这一点

根据proxyquire的文件:

默认情况下,只要在存根上找不到在原始依赖项上定义的函数,proxyquire就会调用该函数

如果您喜欢更严格的行为,您可以在per上防止callThru 模块或上下文基础

我的解决方案:

const proxyquireStrict = proxyquire.noCallThru();
const Store = proxyquireStrict('../../../store/booking-add-store', {
    '../config/paths': {
        createUrl: () => stub().returns(''),
    },
}).default;
const proxyquireStrict = proxyquire.noCallThru();
const Store = proxyquireStrict('../../../store/booking-add-store', {
    '../config/paths': {
        createUrl: () => stub().returns(''),
    },
}).default;