0

現在、JS の単体テストに gulp-karma を使用していますが、現在のバージョンは非推奨です。推奨される新しいバージョンを使用できるように、このコードを置き換えるにはどうすればよいですか?

古いバージョン: var karma = require('gulp-karma');

var testFiles = [
  'client/todo.js',
  'client/todo.util.js',
];

gulp.task('test', function() {
  // Be sure to return the stream 
  return gulp.src(testFiles)
    .pipe(karma({
      configFile: 'karma.conf.js',
      action: 'run'
    }))
    .on('error', function(err) {
      // Make sure failed tests cause gulp to exit non-zero 
      throw err;
    });
});

新しい推奨バージョン (パイプを使用しない):

var gulp = require('gulp');
var karma = require('karma').server;

gulp.task('tests', function(done) {
return karma.start({
      configFile: __dirname + '/test/karma.conf.js',
      singleRun: true
    }, done);
});

パイプを使用する必要があると指定しましたが、常にエラーが発生します。

4

2 に答える 2

0

簡単な調査を行ったので、これがうまくいくとは 100% 確信が持てませんが、試してみてください。

要件
* Promise のサポート (ネイティブまたはサードパーティ ライブラリ経由)
* stream-from-promise =>npm install stream-from-promise --save-dev

まず、カルマ サーバーを promise にラップします (一部のサード パーティ ライブラリは、これに対してより安全なpromisifyfnも提供しています)。

function startKarma(){
  return new Promise( function(resolve, reject){
    karma.start({
      configFile: __dirname + '/test/karma.conf.js',
      singleRun: true
    }, function(error){
      return error ? reject(error) : resolve();
    });
}

次に、プロミスからストリームを作成する関数を作成します。

var StreamFromPromise = require("stream-from-promise");

function makeStream( promise ){
  return StreamFromPromise.obj( promise );
});

それでは、タスクを書きましょう。

gulp.task('tests', function() {
  return gulp.src(testFiles)
  .pipe( makeStream( startKarma() ))
  .on('error', function(err) {
    // Make sure failed tests cause gulp to exit non-zero 
    throw err;
  });
});
于 2016-04-15T11:56:58.260 に答える