如何模拟 google datalayer.push 回调函数?
How do I mock a google datalayer.push callback function?
下面的代码片段显示了我运行 Google 优化 AB 测试的 React 挂钩文件。
export default function useGetABExperimentType(experimentId) {
const [experimentType, setExperimentType] = useState('0');
useEffect(() => {
if (window && window.dataLayer) {
window.dataLayer.push({
event: 'optimize.activate',
eventCallback: () => {
mySideEffectFunction();
},
});
}
}, []);
return experimentType;
}
我正在尝试测试我的 mySideEffectFunction()
函数是否会调用以增加测试覆盖率。
在 Jest 中,如何从 window.dataLayer.push
模拟 eventCallback
回调函数?
所以在测试中我们将 window
称为 global
。所以你可以尝试像这样模拟:
declare global {
interface Window {
dataLayer: {
push: jest.fn().mockImplementation(() => {
eventCallback: jest.fn()
})
}
}
}
我没有对此进行测试,但本质上是模拟 dataLayer
对象,然后模拟其中的函数并模拟实现。那么你应该能够测试模拟函数是否被调用
window.dataLayer = {
push: jest.fn().mockImplementation(config => {
config.eventCallback();
}),
};
我设法用这个模拟并调用了回调。
下面的代码片段显示了我运行 Google 优化 AB 测试的 React 挂钩文件。
export default function useGetABExperimentType(experimentId) {
const [experimentType, setExperimentType] = useState('0');
useEffect(() => {
if (window && window.dataLayer) {
window.dataLayer.push({
event: 'optimize.activate',
eventCallback: () => {
mySideEffectFunction();
},
});
}
}, []);
return experimentType;
}
我正在尝试测试我的 mySideEffectFunction()
函数是否会调用以增加测试覆盖率。
在 Jest 中,如何从 window.dataLayer.push
模拟 eventCallback
回调函数?
所以在测试中我们将 window
称为 global
。所以你可以尝试像这样模拟:
declare global {
interface Window {
dataLayer: {
push: jest.fn().mockImplementation(() => {
eventCallback: jest.fn()
})
}
}
}
我没有对此进行测试,但本质上是模拟 dataLayer
对象,然后模拟其中的函数并模拟实现。那么你应该能够测试模拟函数是否被调用
window.dataLayer = {
push: jest.fn().mockImplementation(config => {
config.eventCallback();
}),
};
我设法用这个模拟并调用了回调。