process.on("exit") で書き込み処理が実行されるので、テストにおいて process.removeListeners() でハンドラを削除してしまっていると出力されない。 ハンドラを削除する必要がある場合は、process.listeners("exit") で事前にハンドラを退避し、事後に設定し直すことで対応できる。下記は istanbul + mocha での場合。 var exitHandlers; before(function () { exitHandlers = process.listeners("exit"); }); after(function () { exitHandlers.forEach(function (handler) { process.on("exit", handler); }); });
サンプル https://github.com/iwata-n/nodejs_coverage node.js+expressで作ってるプロジェクトのテストでカバレッジを取りたかったので調べてみた結果をまとめておく。 gulp ビルドツールとしてgulpを使う。gruntも有るっぽいけどもgulpを使う。 カバレッジ取得ツール istanbulを使う。istanbulをgulpのプラグインとして用意してくれている人がいるので感謝 設定 gulp-istanbulのREADMEに従ってgulpfile.jsを用意する。 express-generatorが出してきたままなコードになっている。 var gulp = require('gulp'); var istanbul = require('gulp-istanbul'); var mocha = require('gulp-mocha'
gulp-mochaとistanbulを使ってローカルでコンソールにテスト結果を表示しつつ、カバレッジも取るといったことはすごく簡単にできたが、JenkinsでJUnit形式で出力されたテスト結果ファイルをパースして結果を表示しようと思ったら困ったのでメモ。 mochaの標準のRepoterでは標準出力にしか出力してくれなくて、ファイルに出せなかった。なので npm install xunit-file を追加して、 gulp-mochaのオプションを mocha({repoter: "xunit-file"}) のように指定することで xunit.xml に出力される。 (gulpで標準出力をそのままファイルに落とす方法無いの??) var gulp = require("gulp"), mocha = require("gulp-mocha"), istanbul = require(
$node -v v0.12.0 $npm list ... ..mocha@2.3.4 ..gulp@3.9.0 ..gulp-istanbul@0.10.3 ..istanbul@0.4.2 ..isparta@4.0.0 import gulp from 'gulp' import mocha from 'gulp-mocha' import istanbul from 'gulp-istanbul' const SOURCES = 'src/**/*.js' const TEST_FILES = 'test/**/*.js' gulp.task('pre-test-coverage', () => { return gulp.src(SOURCES) .pipe(istanbul( { instrumenter: require('isparta').Instrumenter })
前提環境 以下のようなフォルダ構成になっている環境を前提とする。 Windows 7環境で確認。 +node_modules +src | +―ソースファイル.js +test +―テストコード.js Windows上でもmocha+istanbulでコードカバレッジを取りたい。 自分向けのメモ書き。 Node.js + Mocha のUT環境で、コードカバレッジを取りたい!で 検索すると、 npm install mocha istanbul したうえで、 istanbul cover _mocha で出来る、ってのがヒットするが、これはLinux環境の話。 Windows環境での実行方法は以下になる。 npm install mocha istanbul は同様。この状態で、 node node_modules\istanbul\lib\cli.js cover node_module
この記事は CureApp Advent Calendar 23日目の記事です。 今日はフロントエンドのカバレッジの話です。 テストカバレッジとは テストカバレッジとは、テストの際にどれくらいの割合のコードがテストされているか・されていないかを集計した情報のことです。 原理としては、JavaScript の場合は、テスト実行前にスクリプトに変換をかけて、各行に、 その行を実行したことを記録するコード を追加し(この変換のことを Instrumentation と言います)、その状態でテストを走らせます。全テストケース終了後に、各行から出力された行の実行情報を集計してまとめることで、カバレッジレポートを作成しています。 テストカバレッジの意味 テストカバレッジが出せるようになると、行ごとにテストされた・されてないという情報を知ることができ、全体で何%がテストされたという情報をトラッキングする
はじめに codecov で typescript のカバレッジを報告しようとしたら、 no-reports-generated error=Error となってグラフが表示されなかった話です。 厳密に言うと、ソースコードは typescript で書いているものの、テストはトランスパイルされた javascript に対して行っている状況です。typescript でテストを書いたらそもそもこの状況は起こらないかもしれません。 codecov とは テストするときによく用いられる指標として、カバレッジ(coverage)ってありますよね。CI の過程でこの工程が手動というのはやはり良くないので、カバレッジを自動で計算して github の README にペタッと貼っておいてくれるというのは、エンジニアの自然な欲求なわけです。 そのうち、codecov がカバーしてくれるのは、"gith
Lint Lint::AmbiguousOperator 括弧なしのメソッド呼び出しの最初の引数であいまいな演算子のチェック array = [1, 2, 3] # The `*` is interpreted as a splat operator but it could possibly be # a `*` method invocation (i.e. `do_something.*(array)`). do_something *array # With parentheses, there's no ambiguity. do_something(*array) # This is interpreted as a method invocation with a regexp literal, # but it could possibly be `/` method in
On the way back to Boston from the wonderful EmpEx conference, I felt an itch to code. Not an itch to write something grand or complex. Quite the opposite, I felt the need to write something simple and satisfying. It’s possible Cameron Price’s talk about refining your tools through small practices was still tickling the back of my brain. I needed an exercise that was well defined and flowed from s
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く