[英]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.