1

多くの単体テストがあるREST APIを構築しています。

コードカバレッジなど、それらに関する情報が必要です。

私は、IstanbulIspartaを扱った多くの記事、および ES6 コードのテスト カバレッジ (mocha の助けを借りて) を実行する能力 (この記事) を読んだので、それらを使用したいと思いました。

NodeJS 0.12.7 を使用しており、Babel トランスパイラーを使用して ES6 コードを ES5 に変換しています。

次のようなgulpタスクを使用します。

/* Unit test task */
gulp.task('pre-test', function() {
  return gulp.src(['src/app/**/*.js'])
    .pipe(plumber())
    .pipe(istanbul({
      instrumenter: isparta.Instrumenter,
      includeUntested: true
    }))
    .pipe(istanbul.hookRequire());
});

gulp.task('test:unit', ['pre-test'], function() {
  return gulp.src(['src/test/unit/**/*.js'])
    .pipe(mocha({
      reporter: 'spec'
    }))
    .pipe(istanbul.writeReports({}));
});

ただし、以下のようなツールを使用しようとすると、次のようなエラーが発生します。

C:\projects\nodejs\project\src\test\unit\core\TestConfReader.js:1
(function (exports, require, module, __filename, __dirname) { import ConfReade
                                                              ^^^^^^
SyntaxError: Unexpected reserved word
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)

これは、イスタンブールが ES6 コードを認識できないことを意味します。私はおそらくそこに何かが欠けています。

だから私の質問は:

Node 0.12.7 を使用して、ES6 コード (各クラス コンストラクターで try/catch のような多くのコードが生成される ES5 コードではなく) で単体テストを行い、テスト カバレッジを適用するにはどうすればよいですか?

4

1 に答える 1

0

まず、npm から「babel」をインストールします。

次にrequire('babel/register');、gulpfile の先頭に追加します。

于 2016-01-13T16:03:38.557 に答える