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 コマンドを変更する必要がありますか (ランナーの他のタスクを中断するので理想的ではありません)。

この問題または同一のセットアップが事前に対処されているようには見えません。助けてください!また、これは私の最初のスタック オーバーフロー Q であるため、必要なすべての情報を提供できれば幸いです。ありがとう :)

4

1 に答える 1

1

この回答はジャスミン/フリスビーとは関係ありません。しかし、テストに失敗して travis ci がパスしたときに 0 で終了する 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()
});

私が理解した部分は、0 以外の終了コードを使用して gulp を手動で終了するprocess.exit(1);と、travis が失敗するということでした。

于 2016-05-18T13:50:26.310 に答える