观看并重新运行Jest JS测试


77

玩笑文档建议使用npm test来执行测试。

有没有一种方法可以查看您的源代码和测试,以便在相关文件更改后自动重新运行Jest测试?

Answers:


133

感谢Erin Stanfill指出,Jest已经支持自动重新运行。更好的配置package.json

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

要打开观看模式,只需使用

$ npm run test -- --watch

要么

$ yarn run test --watch

需要指出的重要一点是,如果在运行测试期间发生更改,nodemon将中断测试并重新启动。grunt watch不会,它将继续当前的测试运行,而忽略测试运行时发生的更改。
portenez

仅删除第一个答案可能是更好的编辑?该编辑对我来说非常有效,一眼看去,使他们俩一起阅读容易混淆。
SimplGy

我有一个名为string.utility.spec.js的文件,当我执行“ npm run test”时,它将被选中运行,但是当我运行“ npm run test---watch”时,将不会选中该文件。将文件重命名为“ string.spec.js”将导致它被拾取并运行。奇怪的。
TigerBear

1
@VishalAnand npm将-之后的所有参数直接传递给脚本。链接
wuct

3
watch也可以添加到“脚本”中:{“ test”:“ jest --watch”},然后您可以使用npm run test
Saif Asad


2

在监视模式下开始测试。

jest --watch fileName.test.js

根据文档

运行与此规范名称匹配的测试(基本上与describe或中的名称匹配test)。

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

1

此示例显示如何使用gulp使用来运行您的Jest测试jest-cli,以及如何使用gulptdd任务来监视文件并在文件更改时重新运行Jest测试:

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
});

由于某种原因,尽管我使用默认__tests__文件夹,但它不适用于此文件夹jestConfig。在阅读了文档并玩了一点之后,这对我var jestConfig = { rootDir: "__tests__" }
有用

1
  1. 安装几个Grunt软件包:

    npm install grunt-contrib-watch grunt-exec --save-dev
    
  2. 做一个Gruntfile.js有以下情况:

    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. 然后只需运行:

    grunt watch
    
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.