如何解决ReferenceError-未为业力茉莉花测试定义gtag?

时间:2018-06-26 11:42:49

标签: angular karma-jasmine

我的Typescript文件中有一个用于Google Analytics(分析)的全局变量。

declare var gtag: any;

当我在Angular Project中运行ng test时,显示以下错误。

ReferenceError: gtag is not defined

2 个答案:

答案 0 :(得分:0)

您必须像这样包装代码,以确保只有在通过Google Analytics(分析)脚本定义了gtap时,它才在浏览器上触发。

if (typeof window != 'undefined') {
//your gtag code here
}

答案 1 :(得分:0)

说明::由于您使用的是Google跟踪代码管理器,因此必须在某处定义gtag函数。当您遵循googleAnalytics的教程时,他们要求您在index.html中包含一些javascript代码。问题是,在运行测试时,您会在没有父组件的情况下创建组件,因此实际的index.html文件都不会加载您添加的javascript代码。您需要先加载该代码,然后再运行测试。

如何进行: 我建议您将内容导出到单独的文件中, 然后将该文件导入到您的index.html

<script src="assets/metrics/gtm.js"></script>

在此之后,进入您的Karma.conf.js及以下框架:[...]添加以下内容:

   files: [
      /* I put my file (containing javascript code) into that path, yours might change */
      { pattern: 'src/assets/**/gtm.js', included: true }
    ],

在此之后,只需重启测试就可以了! 希望对别人有帮助!