当任何文件发生变化时,使用TypeScript和Mocha自动运行测试

时间:2016-12-14 12:26:40

标签: typescript gulp automated-tests mocha gulp-watch

我需要构建一个开发环境,当.ts./src/中的任何./test/文件发生变化时,它会自动编译,运行测试,然后运行TSLint,并打印出结果测试和皮棉。

./src/*.ts  --\   (tsc --watch)         (mocha --watch)
               |---------------> ./lib/ ---------------> console.log
./test/*.ts --/      |
                     |   (tslint --watch)
                     |--------------------> console.log

我已经编写了npm脚本,只使用npm run test运行此工作流程一次:

// package.json
{
  "scripts": {
    "pretest": "tsc", // will compile *.ts in src/ and test/ to lib/
    "test": "mocha --reporter spec --full-trace lib/test/tests.js",  // run the compiled test file
    "posttest": "gulp tslint"  // run gulp for tslint
  }
}

我编写了一个gulp任务来监视文件更改以触发npm脚本:

// gulpfile.js
var exec = require('gulp-exec');
gulp.task("watch", () => {
  gulp.watch(paths.scripts, () => {
    exec(`npm run test`, {
      continueOnError: true,
      pipeStdout: true
    })
  });
});

我跑了gulp watch,但我没有在控制台中显示测试和lint的结果。

当任何*.ts文件发生变化时,如何实现运行ts-compile,mocha-test和ts-lint的目标?

1 个答案:

答案 0 :(得分:0)

直接在mocha中进行测试会更容易,然后您可以对各种任务进行更精细的控制。

您可以执行以下任务:

gulp.task('compileSrcForWatch', ['compileSrc'], () => gulp.start('test'));
gulp.task('compileTestForWatch', ['compileTest'], () => gulp.start('test'));

gulp.task('watchAndTest', () => {
    gulp.watch(config.inputSourceFiles, ['compileSrcForWatch']);
    gulp.watch(config.inputTestFiles, ['compileTestForWatch']);
});

我已经用整个文件here创建了一个要点。