2

我正在使用gulp-jasmine-node插件运行我的 Jasmine/Frisby.js 测试,如下所示:

gulp.task('runJasmine', function() {
  return gulp.src(['test/*spec.js'])
    .pipe(jasmineNode({
       timeout: 10000
    }));
});

gulp.task('test', ['runJasmine']);

在本地运行gulp test我得到以下信息(仅限片段):

2) Frisby Test: Get API root
[ GET http://localhost:8080/api ]
Message:
 Error: Header 'content-type' not present in HTTP response
Stacktrace:
 Error: Header 'content-type' not present in HTTP response
at null.<anonymous> 
...

Finished in 0.042 seconds
1 test, 2 assertions, 2 failures, 0 skipped

我的 .travis.yml:

language: node_js
node_js:
  - "0.12"
  - "4.2.4"
  - "5.3.0"
before_script:
  - npm install -g gulp
script: gulp test

Travis 上相应的原始 CI 输出(仅结束片段):

Finished in 0.054 seconds
[31m1 test, 2 assertions, 2 failures, 0 skipped
[0m travis_time:end:00bb9734:start=1455472901504935117,finish=1455472903105906383,duration=1600971266
[0K [32;1mThe command "gulp test" exited with 0.[0m

Done. Your build exited with 0.

我不确定为什么尽管失败了构建仍然通过 - 使用 gulp 时 Travis 中是否有特定配置,具体取决于使用的测试工具?是否由于进程以代码 0 退出,如果是这样,我是否需要修改我的 gulp 命令以在失败时退出进程(不理想,因为会中断运行器中的其他任务)。

似乎找不到此问题或预先解决的相同设置。请帮忙!另外,这是我的第一个 Stack Overflow Q,所以希望我已经提供了所有需要的信息。谢谢 :)

4

1 回答 1

1

这个答案与 jasmin/frisby 无关。但仍然可以帮助其他人在失败的测试中以 0 退出并让 travis ci 通过。

这是我的 gulp 测试

gulp.task('test', function () {
    mochify('./src/js/__tests__/**/*.js', {
        extension: ['.jsx', '.js'],
        node: true,
        path: ['./src/js/'],
        watch: false,
    })
        .transform(babelify)
        .transform(envify({
            _: 'purge',
            NODE_ENV: 'production',
        }))
        .on('error', function(){
            // Exits gulp with error
            process.exit(1);
        }).bundle()
});

我发现的部分是您可以手动退出 gulp,退出代码为非 0 via process.exit(1);,然后 travis 将失败。

于 2016-05-18T13:50:26.310 回答