karma 在 ng 测试后看不到测试(执行 0 次,共 0 次成功)

karma doesn't see tests after ng test (Executed 0 of 0 SUCCESS)

我在 运行ning 测试中遇到了问题。 运行ning ng test命令后,命令行显示

Chrome 83.0.4103 (Windows 7.0.0): Executed 0 of 0 SUCCESS (0.007 secs / 0 secs)
TOTAL: 0 SUCCESS
TOTAL: 0 SUCCESS

在我的浏览器中,我看到带有信息的业力标签: 0 specs, 0 failures 在控制台中出现错误 Failed to load resource: the server responded with a status of 404 (Not Found)

在其他笔记本电脑上测试 运行。

我的karma.conf.js

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', '@angular-devkit/build-angular'],
    files: [   
      'src/app/**/*.js'
    ],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage-istanbul-reporter'),
      require('@angular-devkit/build-angular/plugins/karma')
    ],
    client: {
      clearContext: false // leave Jasmine Spec Runner output visible in browser
    },
    coverageIstanbulReporter: {
      dir: require('path').join(__dirname, '../coverage'),
      reports: ['html', 'lcovonly'],
      fixWebpackSourcePaths: true
    },
    reporters: ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
  });
};

Package.json

{
  "name": "angular-i-spy",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "api": "json-server server/db.json --watch"
  },
  "private": true,
  "dependencies": {
    "@angular-devkit/build-angular": "^0.900.3",
    "@angular/animations": "^9.0.2",
    "@angular/common": "^9.0.2",
    "@angular/compiler": "^9.0.2",
    "@angular/core": "^9.0.2",
    "@angular/forms": "^9.0.2",
    "@angular/http": "^7.2.16",
    "@angular/localize": "^9.1.9",
    "@angular/platform-browser": "^9.0.2",
    "@angular/platform-browser-dynamic": "^9.0.2",
    "@angular/router": "^9.0.2",
    "@ng-bootstrap/ng-bootstrap": "^5.3.0",
    "bootstrap": "^4.4.1",
    "core-js": "^2.6.11",
    "json-server": "^0.16.1",
    "rxjs": "~6.5.4",
    "ts-md5": "^1.2.7",
    "zone.js": "~0.10.2"
  },
  "devDependencies": {
    "@angular/cli": "^9.0.3",
    "@angular/compiler-cli": "^9.0.2",
    "@angular/language-service": "^9.0.2",
    "@types/jasmine": "~2.8.8",
    "@types/jasminewd2": "^2.0.8",
    "@types/node": "~8.9.4",
    "codelyzer": "~4.3.0",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "^4.4.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "^2.0.6",
    "karma-jasmine": "~1.1.2",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "^5.4.3",
    "ts-node": "~7.0.0",
    "tslint": "~5.11.0",
    "typescript": "^3.7.5"
  }
}

测试示例:

import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { InitialPageComponent } from './initial-page.component';

describe('InitialPageComponent', () => {
  let component: InitialPageComponent;
  let fixture: ComponentFixture<InitialPageComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ InitialPageComponent ]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(InitialPageComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

Test.ts

import 'zone.js/dist/zone-testing';
import { getTestBed } from '@angular/core/testing';
import {
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';

declare const require: any;

// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
  BrowserDynamicTestingModule,
  platformBrowserDynamicTesting()
);
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

tsconfig.spec.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/spec",
    "types": [
      "jasmine",
      "node"
    ]
  },
  "files": [
    "test.ts",
    "polyfills.ts"
  ],
  "include": [
    "**/*.spec.ts",
    "**/*.d.ts"
  ]
}

angular.json

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "angular-iSpy": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {},
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/angular-iSpy",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.app.json",
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.css"
            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "angular-iSpy:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "angular-iSpy:build:production"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "angular-iSpy:build"
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "src/test.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.spec.json",
            "karmaConfig": "src/karma.conf.js",
            "styles": [
              "src/styles.css"
            ],
            "scripts": [],
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ]
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "src/tsconfig.app.json",
              "src/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "angular-iSpy-e2e": {
      "root": "e2e/",
      "projectType": "application",
      "architect": {
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "e2e/protractor.conf.js",
            "devServerTarget": "angular-iSpy:serve"
          },
          "configurations": {
            "production": {
              "devServerTarget": "angular-iSpy:serve:production"
            }
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": "e2e/tsconfig.e2e.json",
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "ISpyBeaconManagement": {
      "root": "projects/ISpyBeaconManagement/",
      "sourceRoot": "projects/ISpyBeaconManagement/src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {},
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/ISpyBeaconManagement",
            "index": "projects/ISpyBeaconManagement/src/index.html",
            "main": "projects/ISpyBeaconManagement/src/main.ts",
            "polyfills": "projects/ISpyBeaconManagement/src/polyfills.ts",
            "tsConfig": "projects/ISpyBeaconManagement/tsconfig.app.json",
            "assets": [
              "projects/ISpyBeaconManagement/src/favicon.ico",
              "projects/ISpyBeaconManagement/src/assets"
            ],
            "styles": [
              "projects/ISpyBeaconManagement/src/styles.css"
            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "projects/ISpyBeaconManagement/src/environments/environment.ts",
                  "with": "projects/ISpyBeaconManagement/src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "ISpyBeaconManagement:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "ISpyBeaconManagement:build:production"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "ISpyBeaconManagement:build"
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "projects/ISpyBeaconManagement/src/test.ts",
            "polyfills": "projects/ISpyBeaconManagement/src/polyfills.ts",
            "tsConfig": "projects/ISpyBeaconManagement/tsconfig.spec.json",
            "karmaConfig": "projects/ISpyBeaconManagement/karma.conf.js",
            "styles": [
              "projects/ISpyBeaconManagement/src/styles.css"
            ],
            "scripts": [],
            "assets": [
              "projects/ISpyBeaconManagement/src/favicon.ico",
              "projects/ISpyBeaconManagement/src/assets"
            ]
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "projects/ISpyBeaconManagement/tsconfig.app.json",
              "projects/ISpyBeaconManagement/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "ISpyBeaconManagement-e2e": {
      "root": "projects/ISpyBeaconManagement-e2e/",
      "projectType": "application",
      "architect": {
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "projects/ISpyBeaconManagement-e2e/protractor.conf.js",
            "devServerTarget": "ISpyBeaconManagement:serve"
          },
          "configurations": {
            "production": {
              "devServerTarget": "ISpyBeaconManagement:serve:production"
            }
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": "projects/ISpyBeaconManagement-e2e/tsconfig.e2e.json",
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "ISpyRoomManagement": {
      "root": "projects/ISpyRoomManagement/",
      "sourceRoot": "projects/ISpyRoomManagement/src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {},
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/ISpyRoomManagement",
            "index": "projects/ISpyRoomManagement/src/index.html",
            "main": "projects/ISpyRoomManagement/src/main.ts",
            "polyfills": "projects/ISpyRoomManagement/src/polyfills.ts",
            "tsConfig": "projects/ISpyRoomManagement/tsconfig.app.json",
            "assets": [
              "projects/ISpyRoomManagement/src/favicon.ico",
              "projects/ISpyRoomManagement/src/assets"
            ],
            "styles": [
              "projects/ISpyRoomManagement/src/styles.css"
            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "projects/ISpyRoomManagement/src/environments/environment.ts",
                  "with": "projects/ISpyRoomManagement/src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "ISpyRoomManagement:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "ISpyRoomManagement:build:production"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "ISpyRoomManagement:build"
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "projects/ISpyRoomManagement/src/test.ts",
            "polyfills": "projects/ISpyRoomManagement/src/polyfills.ts",
            "tsConfig": "projects/ISpyRoomManagement/tsconfig.spec.json",
            "karmaConfig": "projects/ISpyRoomManagement/karma.conf.js",
            "styles": [
              "projects/ISpyRoomManagement/src/styles.css"
            ],
            "scripts": [],
            "assets": [
              "projects/ISpyRoomManagement/src/favicon.ico",
              "projects/ISpyRoomManagement/src/assets"
            ]
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "projects/ISpyRoomManagement/tsconfig.app.json",
              "projects/ISpyRoomManagement/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "ISpyRoomManagement-e2e": {
      "root": "projects/ISpyRoomManagement-e2e/",
      "projectType": "application",
      "architect": {
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "projects/ISpyRoomManagement-e2e/protractor.conf.js",
            "devServerTarget": "ISpyRoomManagement:serve"
          },
          "configurations": {
            "production": {
              "devServerTarget": "ISpyRoomManagement:serve:production"
            }
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": "projects/ISpyRoomManagement-e2e/tsconfig.e2e.json",
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "ISpyLocationManagement": {
      "root": "projects/ISpyLocationManagement/",
      "sourceRoot": "projects/ISpyLocationManagement/src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {},
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/ISpyLocationManagement",
            "index": "projects/ISpyLocationManagement/src/index.html",
            "main": "projects/ISpyLocationManagement/src/main.ts",
            "polyfills": "projects/ISpyLocationManagement/src/polyfills.ts",
            "tsConfig": "projects/ISpyLocationManagement/tsconfig.app.json",
            "assets": [
              "projects/ISpyLocationManagement/src/favicon.ico",
              "projects/ISpyLocationManagement/src/assets"
            ],
            "styles": [
              "projects/ISpyLocationManagement/src/styles.css"
            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "projects/ISpyLocationManagement/src/environments/environment.ts",
                  "with": "projects/ISpyLocationManagement/src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "ISpyLocationManagement:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "ISpyLocationManagement:build:production"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "ISpyLocationManagement:build"
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "projects/ISpyLocationManagement/src/test.ts",
            "polyfills": "projects/ISpyLocationManagement/src/polyfills.ts",
            "tsConfig": "projects/ISpyLocationManagement/tsconfig.spec.json",
            "karmaConfig": "projects/ISpyLocationManagement/karma.conf.js",
            "styles": [
              "projects/ISpyLocationManagement/src/styles.css"
            ],
            "scripts": [],
            "assets": [
              "projects/ISpyLocationManagement/src/favicon.ico",
              "projects/ISpyLocationManagement/src/assets"
            ]
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "projects/ISpyLocationManagement/tsconfig.app.json",
              "projects/ISpyLocationManagement/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "ISpyLocationManagement-e2e": {
      "root": "projects/ISpyLocationManagement-e2e/",
      "projectType": "application",
      "architect": {
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "projects/ISpyLocationManagement-e2e/protractor.conf.js",
            "devServerTarget": "ISpyLocationManagement:serve"
          },
          "configurations": {
            "production": {
              "devServerTarget": "ISpyLocationManagement:serve:production"
            }
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": "projects/ISpyLocationManagement-e2e/tsconfig.e2e.json",
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "ISpyPresentationManagement": {
      "root": "projects/ISpyPresentationManagement/",
      "sourceRoot": "projects/ISpyPresentationManagement/src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {},
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/ISpyPresentationManagement",
            "index": "projects/ISpyPresentationManagement/src/index.html",
            "main": "projects/ISpyPresentationManagement/src/main.ts",
            "polyfills": "projects/ISpyPresentationManagement/src/polyfills.ts",
            "tsConfig": "projects/ISpyPresentationManagement/tsconfig.app.json",
            "assets": [
              "projects/ISpyPresentationManagement/src/favicon.ico",
              "projects/ISpyPresentationManagement/src/assets"
            ],
            "styles": [
              "projects/ISpyPresentationManagement/src/styles.css"
            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "projects/ISpyPresentationManagement/src/environments/environment.ts",
                  "with": "projects/ISpyPresentationManagement/src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "ISpyPresentationManagement:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "ISpyPresentationManagement:build:production"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "ISpyPresentationManagement:build"
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "projects/ISpyPresentationManagement/src/test.ts",
            "polyfills": "projects/ISpyPresentationManagement/src/polyfills.ts",
            "tsConfig": "projects/ISpyPresentationManagement/tsconfig.spec.json",
            "karmaConfig": "projects/ISpyPresentationManagement/karma.conf.js",
            "styles": [
              "projects/ISpyPresentationManagement/src/styles.css"
            ],
            "scripts": [],
            "assets": [
              "projects/ISpyPresentationManagement/src/favicon.ico",
              "projects/ISpyPresentationManagement/src/assets"
            ]
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "projects/ISpyPresentationManagement/tsconfig.app.json",
              "projects/ISpyPresentationManagement/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "ISpyPresentationManagement-e2e": {
      "root": "projects/ISpyPresentationManagement-e2e/",
      "projectType": "application",
      "architect": {
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "projects/ISpyPresentationManagement-e2e/protractor.conf.js",
            "devServerTarget": "ISpyPresentationManagement:serve"
          },
          "configurations": {
            "production": {
              "devServerTarget": "ISpyPresentationManagement:serve:production"
            }
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": "projects/ISpyPresentationManagement-e2e/tsconfig.e2e.json",
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    }
  },
  "defaultProject": "angular-iSpy"
}

我在命令行中也遇到错误

ERROR in node_modules/@types/node/index.d.ts:73:11 - error TS2300: Duplicate identifier 'IteratorResult'.

73 interface IteratorResult<T> { }
             ~~~~~~~~~~~~~~

  node_modules/typescript/lib/lib.es2015.iterable.d.ts:41:6
    41 type IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>;
            ~~~~~~~~~~~~~~
    'IteratorResult' was also declared here.
node_modules/typescript/lib/lib.es2015.iterable.d.ts:41:6 - error TS2300: Duplicate identifier 'IteratorResult'.

41 type IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>;
        ~~~~~~~~~~~~~~

  node_modules/@types/node/index.d.ts:73:11
    73 interface IteratorResult<T> { }
                 ~~~~~~~~~~~~~~
    'IteratorResult' was also declared here.

非常感谢您的帮助。

Run npm i @types/node@latest --save-dev

此命令将解决您遇到的错误。

要解决 0 规格问题,请执行以下操作:- 从您的 karma.conf.js 中删除文件数组,它应该是 fine.test.ts 将负责执行所有测试用例。

如果仍然无效,请将您的 tsconfig.spec.json 更改为:-

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": [
      "jasmine",
      "node"
    ]
  },
  "files": [
    "src/test.ts",
    "src/polyfills.ts"
  ],
  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts"
  ]
}

在 angular.json 中,你应该有类似的东西:-

"test": {
  "builder": "@angular-devkit/build-angular:karma",
  "options": {
    "main": "src/test.ts",
    "polyfills": "src/polyfills.ts",
    "tsConfig": "tsconfig.spec.json",
    "karmaConfig": "karma.conf.js",
    "assets": [
      "src/favicon.ico",
      "src/assets"
    ],
    "styles": [
      "src/styles.css"
    ],
    "scripts": []
  }
}

我遇到了同样的问题,但是在 angular/nativescript 共享代码项目中。我通过从 karma.conf.js 中删除文件配置并添加 tsconfig.spec.json:

解决了这个问题
"compilerOptions": {
"paths": {
  "@src/*": [
    "src/*.ts"
  ]
},
"types": [
  "jasmine",
  "node"
]

},