【发布时间】:2017-12-18 14:43:20
【问题描述】:
我正在使用 Jest 测试一个 Angular 应用程序,运行简单测试需要很长时间,我似乎无法弄清楚原因。
package.json 中的我的 Jest 设置:
"jest": {
"modulePaths": [
"<rootDir>/src",
"<rootDir>/node_modules"
],
"testPathIgnorePatterns": [
".git/.*",
"node_modules/.*"
],
"transformIgnorePatterns": [
"node_modules/.*",
".*\\.js"
],
"setupTestFrameworkScriptFile": "<rootDir>/src/setupJest.js",
"preset": "jest-preset-angular",
"testEnvironment": "jsdom",
"testRegex": "src/app/.*\\.spec\\.ts$",
"moduleFileExtensions": [
"ts",
"js",
"json"
],
"verbose": true,
"cacheDirectory": ".jest-cache",
"coveragePathIgnorePatterns": [
".*\\.(shim\\.ngstyle|ngfactory)\\.ts"
],
"globals": {
"ts-jest": {
"tsConfigFile": "./tsconfig.json"
},
"__TRANSFORM_HTML__": true
}
}
我的 Jest 设置文件:
'use strict';
require('core-js/es6/reflect');
require('core-js/es7/reflect');
require('zone.js');
require('zone.js/dist/proxy.js');
require('zone.js/dist/sync-test');
require('zone.js/dist/async-test');
require('zone.js/dist/fake-async-test');
require('jest-zone-patch');
const getTestBed = require('@angular/core/testing').getTestBed;
const BrowserDynamicTestingModule = require('@angular/platform-browser-dynamic/testing').BrowserDynamicTestingModule;
const platformBrowserDynamicTesting = require('@angular/platform-browser-dynamic/testing') .platformBrowserDynamicTesting;
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);
这是我的简单测试:
fdescribe('RichTextEditorComponent', () => {
it('should be fast', () => {
expect(true).toBeTruthy();
});
});
【问题讨论】:
-
使用 Windows 7 - 64bit / node 6.9.4 / npm 3.10.10
-
你找到原因了吗?
-
@RClemens 是的 - 如果我没记错的话,这与 jest 本身在 Windows 机器上的速度较慢有关。
-
可能与this issue 或this issue 有关。如果您处于观看模式,禁用它可能会为您节省几秒钟的时间。显然,按顺序运行测试可以将某些 VM 的性能提高 50%。您可能也想尝试一下,添加
--runInBand标志。 -
我能找到的唯一与配置相关的原因是您使用的是
setupTestFrameworkScriptFile,它在每个测试之前运行。您应该使用setupFiles设置,它是一个字符串数组。其中一个字符串应该指向您的文件,它将为每个规范文件运行,而不是为每个测试运行。 jestjs.io/docs/en/configuration#setupfiles-array
标签: javascript angular typescript jestjs