単体テストでカバーされていないコード行を取得しようとしています。
私はmochaを使用して単体テストを行います。これは、実行しなかった行数を報告するレポーター「json-cov」を提供します。
私は2つのファイルを持っています。最初のファイル(foo.js):
module.exports = function () {
for (var result = 0, i = 0; i < arguments.length; i++) {
result += arguments[i];
}
return result;
}
そして2番目のもの(test.js):
var expect = require('expect.js'),
jsc = require('jscoverage'),
//foo = require('./foo.js');
foo = jsc.require(module, './foo.js');
describe('foo', function () {
it('should add all arguments', function () {
expect(foo(1,1)).to.be(2);
});
});
実行するmocha -R json-cov test.js
と、次の結果が得られます。
{
"instrumentation": "node-jscoverage",
"sloc": 0,
"hits": 0,
"misses": 0,
"coverage": 0,
"files": [],
"stats": {
"suites": 1,
"tests": 1,
"passes": 1,
"pending": 0,
"failures": 0,
"start": "2013-01-30T18:00:15.785Z",
"end": "2013-01-30T18:00:15.787Z",
"duration": 2
},
"tests": [
{
"title": "should add all arguments",
"fullTitle": "foo should add all arguments",
"duration": 1
}
],
"failures": [],
"passes": [
{
"title": "should add all arguments",
"fullTitle": "foo should add all arguments",
"duration": 1
}
]
}
何が間違っているので、sloc、hits、misss、coverageが0になりますか?
require
また、jscsの代わりにノードを使用しようとしましたが、成功しませんでした。
編集:mocha -R json-cov test.js --coverage
jscsを使用するとエラーが発生することを試しましたrequire
。ノードを使用するとrequire
、結果は上記と同じになります。
編集:コンソールからjscoverageを実行することさえできません。fooフォルダーとfoo-covフォルダーを作成し、foo.jsをfooフォルダーにコピーしました。それから私jscoverage foo foo-cov
は私にエラーを与えた走りましたabs source path or abs dest path needed!
。また、絶対パスと、引数を配置するための他のいくつかの方法を試しました。失敗。jscoverage用にファイルを準備するにはどうすればよいですか?
編集:それが何らかの関連性がある場合、私はWindowsを使用しています。
編集: npmを介して利用できる「jscoverage」パッケージが1つだけでなく、「visionmedia-jscoverage」もあることに気づきました。それをインストールしようとすると失敗します。おそらくWindowsとLinuxが原因です。
編集:動作するようになりました。ノードパッケージを使用してコードを準備する代わりに、コンソールからjscoverage.exe(ここmocha -R html-cov test.js > coverage.html
からダウンロード)を実行してから、を実行します。今、私はいくつかのコードがエスケープされるという問題を抱えています。だから私は得る
<span class="k">var</span> foo <span class="k">=</span> <span class="k">{</span>
それ以外の
var foo = {
ハイライト付き。
編集:タグは、次のコードでjadeテンプレートを介してレンダリングされたため、エスケープされました:td.source= line.source
これを変更して、td.source!= line.source
私が抱えていたこの最後の問題を修正します。