我正在尝试对依赖于另一个使用文档对象的模块的模块(使用tapejs)进行单元测试,我得到“ReferenceError:document not defined”
// My module i want to test
import { createUrl } from '../config/paths';
// Paths.js
export const url = document.location.toString(); // This is where i'm getting the error.
我尝试使用proxyquire来代理这种依赖,但它似乎没有做任何事情。
const store = proxyquire('../../../store/list-store', {
'../config/paths': {
createUrl: stub(),
},
});
有什么建议吗?
答案 0 :(得分:2)
使用proxyquire的noCallThru
方法帮助我实现了这一目标。
根据代理商的文件:
默认情况下,proxyquire会在存根上找不到原始依赖项上定义的函数。
如果您更喜欢更严格的行为,可以在per上阻止callThru 模块或上下文基础。
我的解决方案:
const proxyquireStrict = proxyquire.noCallThru();
const Store = proxyquireStrict('../../../store/booking-add-store', {
'../config/paths': {
createUrl: () => stub().returns(''),
},
}).default;