繁体   English   中英

如何模拟 google datalayer.push 回调 function?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM