Angular 16:Karma 测试资源管理器给出:afterAll Uncaught ReferenceError:全局未定义

问题描述 投票:0回答:1

角 16:

在 VSCode 中安装或尝试运行 Karma Test Explorer 时,出现以下错误:

Failed to load tests - Test discovery failed: Browser Error - An error was thrown in afterAll
Uncaught ReferenceError: global is not defined
ReferenceError: global is not defined
    at Object.7836 (http://localhost:9976/_karma_webpack_/webpack:/node_modules/buffer/index.js:43:30)
    at __webpack_require__ (http://localhost:9976/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
    at Module.1021 (http://localhost:9976/_karma_webpack_/vendor.js:9566:64)
    at __webpack_require__ (http://localhost:9976/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
    at Module.6938 (http://localhost:9976/_karma_webpack_/vendor.js:13832:79)
    at __webpack_require__ (http://localhost:9976/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
    at Module.1529 (http://localhost:9976/_karma_webpack_/vendor.js:27:84)
    at __webpack_require__ (http://localhost:9976/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
    at Module.9694 (http://localhost:9976/_karma_webpack_/main.js:8153:69)
    at __webpack_require__ (http://localhost:9976/_karma_webpack_/webpack:/webpack/bootstrap:19:1)

有很多关于创建 polyfills.ts 或 js 文件或您自己的文件以及进行导入和添加此代码的帖子

(window as any).global = window;
(window as any).process = {
  env: { DEBUG: undefined },
};

这些文件并将引用放置在 karma/Angular 等配置文件中。无论我做什么,我都会遇到同样的错误。不幸的是,我需要这些全局变量用于 AWS Amplify,因此我必须在某处声明它们。我可以使用 polyfills.ts 或 index.html。

但是,在另一个项目中,我没有 karma.config、test.ts、polyfills.ts,也没有在任何地方定义全局变量,并且在该项目中,Karma Test 资源管理器运行良好。我在问题项目中删除了所有这些文件和配置以及对这些配置的引用,希望它能有所帮助,但事实并非如此。我必须保留放入index.html 中的全局变量。

有人知道如何解决这个问题吗?人工智能工具也无法提出可行的解决方案。我的项目至少运行得很好。我只是无法对其进行单元测试。

angular unit-testing karma-runner
1个回答
0
投票

事实证明我的全局定义很好。有很多可能的地方可以放置这些全局变量。问题是我没有在足够多的地方指出全局变量的来源。我有一些,但不是全部。在我的例子中,我将它们放置在 polyfills.ts 文件中:

我需要在

angular.json
文件中添加两个条目,

在“构建”下

            "polyfills": [
              "zone.js",
              "src/polyfills.ts"
            ],

在“测试”下

            "polyfills": [
              "zone.js",
              "zone.js/testing",
              "src/polyfills.ts"
            ],

tsconfig.app.json
文件中的一个条目,

  "files": [
    "src/main.ts",
    "src/polyfills.ts"
  ],

以及

tsconfig.spec.json
文件中的一项。

  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts",
    "src/polyfills.ts"
  ]

我没有将该条目放入

tsconfig.spec.json
文件中。

© www.soinside.com 2019 - 2024. All rights reserved.