我被分配为团队中的 Angular 应用程序编写单元测试,并且已经完成了 jest 和完成了测试。但是,随着我们的团队将Microsoft的 ApplicationInsights-js 集成到我们的应用程序中,我的测试开始失败。由于公司政策,我无法共享代码,但是我会共享。
我已经在Stack Overflow中搜索了有关 ApplicationInsights-js 的问题,但是没有类似的问题。但是,我在 ApplicationInsights-js 的GitHub页面上发现了这个问题。问题是here。我尝试过修改几乎所有解决方案,但没有成功。根据一名成员的this comment,根据我的理解,我尝试将模块更改为 tsconfig.json 中的其他模块,但未成功。
● Test suite failed to run
ReferenceError: define is not defined
1 | import { Injectable } from '@angular/core';
> 2 | import { AppInsights } from 'applicationinsights-js';
| ^
3 | import { environment } from '../../environments/environment';
4 |
5 | @Injectable({
at Object.<anonymous> (node_modules/applicationinsights-js/bundle/ai.module.js:215:1)
at Object.<anonymous> (src/app/services/app-insights.service.ts:2:1)
at Object.<anonymous> (src/app/login/login.component.ts:8:1)
at Object.<anonymous> (src/app/login/login.component.spec.ts:3:1)
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"esModuleInterop": true,
"module": "es2015",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es6",
"types": ["node", "jest"],
"typeRoots": ["node_modules/@types"],
"lib": ["es2018", "dom"],
"paths": {
"cComponents": ["dist/cComponents"],
"cComponents/*": ["dist/cComponents/*"]
}
}
}
这是我的 ApplicationInsights-js 版本。
“ applicationinsights-js”:“ ^ 1.0.20”
对于我的单元测试,这已经成为一个表演的障碍。任何帮助表示赞赏。如果信息不足,我将尽力提供更多遵守公司政策的信息。
答案 0 :(得分:1)
之所以发生这种情况,是因为该库是作为AMD模块构建的。最新的SDK以UMD的形式提供,因此可以解决此问题。如果您无法升级,则可以使用之前here
讨论过的几种选择if (AppInsights !== undefined)
applicationinsights-js.js
文件添加到__mocks__文件夹即可解决此问题。如果您需要模拟applicationinsights-js
功能,那么您也应该可以在这里完成。 请注意__mocks__区分大小写。有关笑话模拟的更多信息,请see Jest Mock documentation