我有一种情况,我的代码使用的是这样创建的URL api:
const _url = new URL(window.location.href);
并且像这样使用:
if (_url.searchParams.get('locale')) {
do something
}
但是在我的笑话测试中,我得到一个错误:
TypeError: Cannot read property 'get' of undefined
我通过在安装文件中执行此操作来尝试进行全局模拟:
global.URL = jest.fn(() => {
return {
searchParams: jest.fn(() => {
return {
get: jest.fn(() => {
return '';
}),
};
}),
};
});
但是它似乎不起作用。查看我的_url
对象的控制台记录输出,看起来好像一起都缺少searchParam属性:
URL {
[Symbol(impl)]: URLImpl {
_url: {
scheme: 'http',
username: '',
password: '',
host: 'localhost',
port: null,
path: [Array],
query: null,
fragment: null,
cannotBeABaseURL: false
},
[Symbol(wrapper)]: [Circular]
}
}
我在这里做错了什么?
我能够通过这样在设置文件中进行全局模拟来解决它:
global.URL = (() => {
return {
searchParams: {
get: jest.fn((param) => {
const reg = `[?&]${param}=([^&]*)`;
return (window.location.search.match(reg) && window.location.search.match(reg)[1]) ? window.location.search.match(reg)[1] : '';
}),
},
};
});