Мне поручено написать модульные тесты для нашего Angular приложения в нашей команде, и я выполнил настройку и настройку для jest и получил тесты за работой. Но так как наша команда интегрировала Microsoft ApplicationInsights-js в наше приложение, мои тесты начали проваливаться. Я не могу поделиться кодом из-за политики компании, но я поделюсь тем, что могу.
Я искал в переполнении стека эту проблему, касающуюся ApplicationInsights-js , но не было подобных. Но я обнаружил, что это проблема на странице GitHub ApplicationInsights-js . Проблема здесь . Я попытался адаптировать почти все решения, но безуспешно. Согласно этому комментарию участника, в соответствии с моим пониманием, я пытался изменить модуль на другие в 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)
tsconfig.json file
{
"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"
Это стало препятствием для моего юнит-тестирования. Любая помощь приветствуется. Если информации недостаточно, я сделаю все возможное, чтобы предоставить больше информации в соответствии с политикой компании.