nycでbabel6のカバレッジを取る
nycは普段npm test
で実行しているテストに、追従するようにして簡単にコードカバレッジを取ることが出来ます。
{
"scripts": {
"test": "mocha --compilers js:espower-babel/guess",
"cover": "nyc --reporter=lcov --reporter=text npm run test"
}
}
上記のようなcover
を実行すると、lcov
レポータがcoverage/lcov.info
の生成を、text
レポータがコンソール上の集計画面を出力します。
あなたが isparta の代替手段を探している場合、必要なのはnpm install nyc --save-dev
とcover
の追記だけではないでしょうか。
power-assertを使用しない場合は
test
はmocha --require babel-register
としてみてください。
nycの動作確認用の環境設定
前述のスクリーンショットでは、src/index.js
にFooクラスのbazメソッドを定義し、test/index.js
からasync/await
でテストを書くと言う内容で、コードカバレッジを取っています。
具体的には下記のような3ファイルです。
tree .
# .
# ├── package.json
# ├── src
# │ └── index.js
# └── test
# └── index.js
{
"name": "nyc-example",
"scripts": {
"test": "mocha --compilers js:espower-babel/guess",
"cover": "nyc --reporter=lcov --reporter=text npm run test"
},
"devDependencies": {
"babel-polyfill": "^6.3.14",
"babel-preset-es2015": "^6.3.13",
"babel-preset-stage-2": "^6.3.13",
"espower-babel": "^4.0.1",
"mocha": "^2.4.5",
"nyc": "^5.5.0",
"power-assert": "^1.2.0"
},
"babel": {
"presets": [
"es2015",
"stage-2"
]
}
}
export default class Foo {
bar() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('baz');
}, 0);
});
}
}
import Foo from '../src';
import { equal } from 'power-assert';
import 'babel-polyfill';
describe('Fooクラス', () => {
it('barメソッドは非同期にbazを返す', async () => {
const foo = new Foo;
equal(await foo.bar(), 'baz');
});
});
テストでasync/await
を使わないのであれば、babel-polyfill
は不要です。お好みで依存モジュールを付け替えしてみましょう。
avaを使う
power-assert
やbabel-polyfill
を内蔵しているテストランナーavaであれば、package.json
がもう少しシンプルになります。
tree .
# .
# ├── package.json
# ├── src
# │ └── index.js
# └── test
# └── index.js
{
"name": "nyc-example",
"scripts": {
"test": "ava --require babel-register",
"cover": "nyc --reporter=lcov --reporter=text npm run test"
},
"devDependencies": {
"ava": "^0.11.0",
"babel-preset-es2015": "^6.3.13",
"babel-preset-stage-2": "^6.3.13",
"babel-register": "^6.4.3",
"nyc": "^5.5.0"
},
"babel": {
"presets": [
"es2015",
"stage-2"
]
}
}
export default class Foo {
bar() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('baz');
}, 0);
});
}
}
import Foo from '../src';
import test from 'ava';
test('barメソッドは非同期にbazを返す', async t => {
const foo = new Foo;
t.is(await foo.bar(), 'baz');
});
成果物
ava+nyc+travisCIを使ってnpmjsへライブラリを公開したレポジトリがあるので、よければ参考にしてください。
Author And Source
この問題について(nycでbabel6のカバレッジを取る), 我々は、より多くの情報をここで見つけました https://qiita.com/59naga/items/7db57c88ce8cca560ea9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .