Beobachten und wiederholen Sie Jest JS-Tests

74

In der Jest- Dokumentation wird vorgeschlagen npm test, Tests auszuführen.

Gibt es eine Möglichkeit, Ihre Quelle und Tests zu beobachten, um Jest-Tests automatisch erneut auszuführen, wenn relevante Dateien geändert wurden?

Martin Dow
quelle

Antworten:

127

Dank Erin Stanfill für den Hinweis unterstützt Jest bereits die automatische Wiederaufnahme . Die bessere Konfiguration für package.jsonwäre

{
  "scripts": {
    "test": "jest"
  }
}

Um den Uhrenmodus einzuschalten, verwenden Sie einfach

$ npm run test -- --watch

Oder

$ yarn run test --watch
wuct
quelle
Es ist wichtig darauf hinzuweisen, dass nodemon die Tests unterbricht und erneut startet, wenn während der Ausführung der Tests eine Änderung auftritt. grunt watchWenn dies nicht der Fall ist, wird der aktuelle Testlauf fortgesetzt, wobei Änderungen ignoriert werden, die während der Ausführung der Tests auftreten.
Portenez
Es könnte eine bessere Bearbeitung sein, nur die erste Antwort zu entfernen? Die Bearbeitung funktioniert hervorragend für mich und es war auf einen Blick verwirrend, beide zusammen zu lesen.
SimplGy
Ich habe eine Datei mit dem Namen string.utility.spec.js, die beim Ausführen von "npm run test" ausgeführt wird, jedoch nicht, wenn ich "npm run test - --watch" ausführe. Wenn Sie die Datei in "string.spec.js" umbenennen, wird sie aufgenommen und ausgeführt. Seltsam.
TigerBear
1
@VishalAnand npm übergibt alle Argumente nach dem - direkt an das Skript. Link .
Wuct
2
watch kann auch zu "scripts" hinzugefügt werden: {"test": "jest --watch"}, und dann können Sie einfach npm run test
Saif Asad
37

Wenn Sie npm testkonfiguriert haben, können Sie einfach ausführen npm test -- --watch.

Erin Stanfill
quelle
2

Starten Sie Ihre Tests im Überwachungsmodus.

jest --watch fileName.test.js

Gemäß Dokumentation

Führen Sie Tests aus, die diesem Spezifikationsnamen entsprechen (stimmen Sie mit dem Namen in describeoder überein test).

jest -t name-of-spec
// or in watch mode
jest --watch -t="TestName"
dipenparmar12
quelle
1

Dieses Beispiel zeigt, wie Sie gulp verwenden, um Ihre Jest-Tests mit auszuführen jest-cli, sowie eine tddgulp-Aufgabe, um Dateien zu überwachen und Jest-Tests erneut auszuführen, wenn sich eine Datei ändert:

var gulp = require('gulp');
var jest = require('jest-cli');

var jestConfig = {
    rootDir: 'source'
};

gulp.task('test', function(done) {
    jest.runCLI({ config : jestConfig }, ".", function() {
        done();
    });
});

gulp.task('tdd', function(done) {
    gulp.watch([ jestConfig.rootDir + "/**/*.js" ], [ 'test' ]);
});

gulp.task('default', function() {
    // place code for your default task here
});
Martin Dow
quelle
Aus irgendeinem Grund __tests__funktioniert es nicht, obwohl ich den Standardordner verwende jestConfig. Nachdem ich die Dokumente gelesen und ein bisschen gespielt habe, funktioniert das für mich: var jestConfig = { rootDir: "__tests__" }
Jaime Agudo
1
  1. Installieren Sie ein paar Grunt-Pakete:

    npm install grunt-contrib-watch grunt-exec --save-dev
    
  2. mach ein Gruntfile.jsmit folgendem:

    module.exports = function(grunt) {
        grunt.initConfig({
            exec: {
                jest: 'node node_modules/jest-cli/bin/jest'
            },
            watch: {
                files: ['**/*.js'],
                tasks: ['exec:jest']
            }
        });
        grunt.loadNpmTasks('grunt-contrib-watch');
        grunt.loadNpmTasks('grunt-exec');
    }
    
  3. dann einfach ausführen:

    grunt watch
    
bjfletcher
quelle