Angular 单元测试 - 按模块或文件夹运行

Ous*_*OUD 10 unit-testing karma-jasmine angular

我有一个带有 Karma 设置的 Angular 项目,用于单元测试。测试和覆盖率适用于所有规范文件,但应用程序每天都在变大,即使我专注于一个新模块,我也很难运行所有测试,所以我只想运行一些我想要的测试想检查,例如,我有一个管道文件夹,我想做的就是只运行该文件夹中的规范文件,我知道我可以更新 test.ts 文件中的上下文,但我不想更新并每次都还原该文件...

我尝试创建一个新的 Karma 配置文件并更新该files属性以仅添加我想要的文件,但它不起作用。我不知道也许我做错了。(请参阅下面此文件中的部分代码

有什么解决方案或技巧可以做到这一点吗?类似于karma.config.pipes.ts改变上下文的单独 karma 配置(例如:)文件?

// Override dev config
config.set({
  files: [
    {pattern: '../app/pipes/*.spec.ts'}
  ]
});
Run Code Online (Sandbox Code Playgroud)

Swo*_*oox 12

不确定它是否相关,但从 8.1 开始,您可以使用该--include选项,例如:

"ng test --include=**/folder/*.spec.ts"

来源: https: //angular.io/cli/test#optionshttps://blog.ninja-squad.com/2019/07/03/angular-cli-8.1/

另请确保更新您的:@angular-devkit/build-angular。


小智 1

你可以有 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.
// here u can specify the folder
const context = require.context("./pipes", true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);
Run Code Online (Sandbox Code Playgroud)

并在 tsconfig.spec.ts 中配置此文件

{
 "extends": "../tsconfig.json",
 "compilerOptions": {
 "outDir": "../out-tsc/spec",
 "baseUrl": "./",
 "module": "commonjs",
 "target": "es5",
 "types": [
   "jasmine",
   "node"
 ]
 },
 "files": [
  "test.ts"
 ],
"include": [
"**/*.spec.ts",
"**/*.d.ts",
"./polyfills.ts"
]
}
Run Code Online (Sandbox Code Playgroud)

  • 我的问题非常清楚,我知道这一点,我不想每次都编辑和恢复我的 test.ts,我正在寻找一种不同的方式,例如我可以测试模块或文件夹中的所有规范文件我总是可以测试整个应用程序而无需编辑 test.ts 文件。 (4认同)