【发布时间】:2020-01-01 03:27:38
【问题描述】:
所以我在 React 领域花了很长时间,将 Jest 作为我的测试运行器/环境。 快进到新工作,我们正在对一个带有 Karma 的 Angular 8 应用程序进行单元测试。
令我沮丧的是,我找到了 Angular 的默认配置,而那里的每一个指南都建议接近这一行:
const context = require.context('../src/app', true, /\.spec\.ts$/);
所以当我在我的应用程序中更新一个文件时,Angular CLI/Webpack 必须重新构建任何东西,然后它再次重新执行我的整个 f-ing 测试套件,这是数千个测试。
我环顾四周,发现 Karma 了解查找和查看文件的概念,但如果采用这种方法,这似乎永远行不通。
问题是我们需要运行这段代码来设置环境:
import 'zone.js/dist/zone';
import 'zone.js/dist/zone-testing';
import 'core-js/proposals/reflect-metadata';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting,
} from '@angular/platform-browser-dynamic/testing';
declare const require: any;
getTestBed().resetTestEnvironment();
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);
有人在 Angular w/ Karma 中运行差异文件监视/测试吗?如果是这样,它是怎么做的???
有没有类似于 Jest 的setupFilesAfterEnv 的简单方法来运行此设置代码?
相关Karma配置(我没用NG CLI,test.ts有上面的内容):
frameworks: ['parallel', 'jasmine'],
plugins: [
require('ts-loader'),
require('karma-jasmine'),
require('karma-webpack'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-spec-reporter'),
require('karma-parallel'),
],
files: [{ pattern: './test/index.ts', watched: false }],
preprocessors: {
'./test/index.ts': ['webpack'],
},
webpack: karmaConfig(),
webpackMiddleware: {
stats: 'errors-warnings',
}
【问题讨论】:
标签: angular karma-jasmine karma-runner karma-webpack