如何在没有 require.context 的情况下在 Karma 中进行测试
How to test in Karma without require.context
所以我在 React 领域花了很长时间,Jest 作为我的测试 runner/environment。
快进到新工作,我们正在对一个 Angular 8 应用 w/Karma 进行单元测试。
令我沮丧的是,我找到了 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 中观看/测试 运行ning 的差异文件吗?如果有,它是怎么做到的???
是否有一种简单的方法来运行此设置代码类似于 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',
}
我认为你有三种解决方案:
1) 使用 Jest 代替 Angular 测试 (It's possible!)
2) 使用 WallabyJS 可以在幕后 运行 并且只执行更改的测试。我们使用它,它非常好。
3) 使用 fdescribe
和 fit
精确定位测试
所以我在 React 领域花了很长时间,Jest 作为我的测试 runner/environment。 快进到新工作,我们正在对一个 Angular 8 应用 w/Karma 进行单元测试。
令我沮丧的是,我找到了 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 中观看/测试 运行ning 的差异文件吗?如果有,它是怎么做到的???
是否有一种简单的方法来运行此设置代码类似于 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',
}
我认为你有三种解决方案:
1) 使用 Jest 代替 Angular 测试 (It's possible!)
2) 使用 WallabyJS 可以在幕后 运行 并且只执行更改的测试。我们使用它,它非常好。
3) 使用 fdescribe
和 fit
精确定位测试