![](/img/trans.png)
[英]dataLayer.push function not pushing to Google Analytics
[英]How do I mock a google datalayer.push callback function?
下面的代码片段显示了我运行 Google Optimize AB 测试的 React hook 文件。
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()
function 是否会调用以增加测试覆盖率。 在 Jest 中,如何从window.dataLayer.push
eventCallback
window.dataLayer = {
push: jest.fn().mockImplementation(config => {
config.eventCallback();
}),
};
我设法用这个模拟并调用回调。
所以在测试中我们将window
称为global
。 所以你可以像这样尝试 mocking:
declare global {
interface Window {
dataLayer: {
push: jest.fn().mockImplementation(() => {
eventCallback: jest.fn()
})
}
}
}
我没有测试过这个,但本质上是 mocking dataLayer
object 然后是 mocking 里面的函数和 mocking 实现。 那么您应该能够测试是否调用了模拟的 function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.