J'utilise Jest pour tester une application angulaire et les tests simples mettent beaucoup de temps à s'exécuter et je n'arrive pas à comprendre pourquoi.
Ma configuration Jest dans package.json
:
"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
}
}
Mon fichier de configuration de 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()
);
Voici mon test simple :
fdescribe('RichTextEditorComponent', () => {
it('should be fast', () => {
expect(true).toBeTruthy();
});
});
Quelqu'un a-t-il une idée de la raison pour laquelle cela prend plus de 9 secondes ?
1 votes
Utilisation de Windows 7 - 64bit / node 6.9.4 / npm 3.10.10
0 votes
Vous avez découvert pourquoi ?
2 votes
@RClemens oui - cela a à voir avec le paquet de jest lui-même qui est plus lent sur les machines Windows - si je me souviens bien.
1 votes
Cela peut être lié à cette question ou cette question . Si vous êtes en mode veille, sa désactivation peut vous faire gagner quelques secondes. Apparemment, l'exécution séquentielle des tests améliore les performances de 50 % sur certaines VM. Vous pouvez essayer cela aussi, en ajoutant l'option
--runInBand
drapeau.2 votes
La seule raison liée à la configuration que je peux trouver est que vous utilisez
setupTestFrameworkScriptFile
qui s'exécute avant chaque test . Vous devriez utiliser lesetupFiles
qui est un tableau de chaînes de caractères. L'une de ces chaînes doit pointer vers votre fichier, et il s'exécutera pour chaque fichier de spécification au lieu de s'exécuter pour chaque test. jestjs.io/docs/fr/configuration#setupfiles-array0 votes
Il s'agit d'une solution simple telle que décrite ici
0 votes
Duplicata possible de Tests unitaires Angular 4 (TestBed) extrêmement lents