127 votes

Jest - Les tests simples sont lents

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 ? enter image description here

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.

0voto

Si vous rencontrez des problèmes d'exécution lente des suites de tests jest, mettez à jour la version 25 ou supérieure. La version 24 de Jest fonctionne lentement.

https://jestjs.io/blog/2020/01/21/jest-25#performance-improvements [jest-25#performance-improfits] [1]

-2voto

Rafael Lucini Points 452

Utiliser ng-bulltet

npm install ng-bullet

Et configurez votre TestBed :

  import { configureTestSuite } from 'ng-bullet';
    ...
    configureTestSuite(() => {
        TestBed.configureTestingModule({
            declarations: [ /*list of components goes here*/ ],
            imports: [ /* list of providers goes here*/ ]
        })
    });

Plus d'informations dans : https://www.npmjs.com/package/ng-bullet

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X