我是节点的新手并且正在开发任何类型的"适当的"环境。我已经安装了当前项目的gulp,以及mocha和其他一些模块。这是我的gulpfile.js:
var gulp = require('gulp');
var mocha = require('gulp-mocha');
var eslint = require('gulp-eslint');
gulp.task('lint', function () {
return gulp.src(['js/**/*.js'])
// eslint() attaches the lint output to the eslint property
// of the file object so it can be used by other modules.
.pipe(eslint())
// eslint.format() outputs the lint results to the console.
// Alternatively use eslint.formatEach() (see Docs).
.pipe(eslint.format())
// To have the process exit with an error code (1) on
// lint error, return the stream and pipe to failOnError last.
.pipe(eslint.failOnError());
});
gulp.task('test', function () {
return gulp.src('tests/test.js', {read: false})
// gulp-mocha needs filepaths so you can't have any plugins before it
.pipe(mocha({reporter: 'list'}));
});
gulp.task('default', ['lint','test'], function () {
// This will only run if the lint task is successful...
});
当我运行' gulp'时,它似乎完成了所有任务,但挂了。我必须按ctrl + c才能返回命令提示符。如何正确完成它?
答案 0 :(得分:15)
测试套件未退出
如果您的测试套件没有退出,可能是因为您仍然有一个挥之不去的回调,通常是由打开的数据库引起的 连接。您应该关闭此连接或执行以下操作:
gulp.task('default', function () { return gulp.src('test.js') .pipe(mocha()) .once('error', function () { process.exit(1); }) .once('end', function () { process.exit(); }); });
答案 1 :(得分:3)
如果您在gulp-mocha
之后没有运行任何内容,则可以使用已接受的解决方案。但是,如果您需要在gulp-mocha
之后运行任务(例如在部署构建之前运行mocha测试),这里的解决方案将阻止gulp
无限期挂起,同时仍允许任务在{{1}之后运行}:
gulp-mocha
这是有效的,因为来自inherits的gulp.on('stop', () => { process.exit(0); });
gulp.on('err', () => { process.exit(1); });
orchestrator emits the events分别在所有任务运行完成或出错后Candidate sampling。
答案 2 :(得分:2)
在gulp任务中添加一个return语句。或者运行回调。
public class MyView extends View {
public void someCustomMethod() {
...
}
}
答案 3 :(得分:2)
升级到mocha 4后,我可以通过将--exit
传递给mocha来解决此问题。
有关详细信息,请参阅https://boneskull.com/mocha-v4-nears-release/#mochawontforceexit。
使用gulp-mocha时,请将选项添加为exit: true
,如下所示:
gulp.task('test', function () {
return gulp.src(['tests/**/*.spec.js'], {read: false})
.pipe(mocha({ exit: true }));
});