[Babel] Babel: mocha + power-assert + espower-babel で es6 で書いたテストを実行する
動く形まで写経する。
espower-babel は Deprecated ということなので、
まとめ直した。
Babel: mocha + power-assert + babel-register + babel-preset-power-assert で es6 で書いたテストを実行する | deadwood
[markdown]
> * [ES6 コードをテストする – アカベコマイリ](http://akabeko.me/blog/2015/05/es6-unit-test/)
>
> ES6 で書かれたコードをユニットテストしたい。できればテスト自体も ES6 で。という希望を実現してくれそうなツールがあったので試してみる。
## インストール
Babel と Browserify を利用しているので、2つめの方法を選択。
> [There are four ways to use power-assert.](https://github.com/power-assert-js/power-assert#how-to-use)
>
> power-assert + Babel + babel-plugin-espower: Recommended if you are writing ES6 with Babel or babelify with browserify
mocha と power-assert, espower-babel をインストールする。
> * [power-assert-js/power-assert: Power Assert in JavaScript. Provides descriptive assertion messages through standard assert interface. No API is the best API.](https://github.com/power-assert-js/power-assert)
> * [power-assert-js/espower-babel: power-assert instrumentor for babel(6to5) + mocha.](https://github.com/power-assert-js/espower-babel)
“`prettyprinted
% npm install –save-dev mocha power-assert espower-babel
“`
## 使い方
`require(‘assert’)` を `require(‘power-assert’)` へ変更する。
> * [テストコードをES6+power-assertで書けるespower-babel 3.0.0リリース | Web Scratch](http://efcl.info/2015/05/10/espower-babel3.0.0/)
“`javascript:test/math.test.js
const assert = require(‘power-assert’);
import * as Math from ‘../src/lib/math.es6.js’;
// もしくは
// const Math = require(‘../src/lib/math.es6.js’);
/** @test {Math} */
describe(‘Math’, () => {
/** @test {pi} */
describe(‘pi’, () => {
it(‘円周率は 3.141593 である’, () => {
assert(Math.pi === 3.141593);
});
});
/** @test {sum} */
describe(‘sum’, () => {
it(‘1 + 2 の合計は 3 である’, () => {
assert(Math.sum(1, 2) === 3);
});
});
});
“`
`–compilers` オプションを付けて実行する。
“`prettyprinted
% $(npm bin)/mocha –compilers js:espower-babel/guess test/**/*.test.js
“`
## ESDoc 上でコードとユニットテストを関連付ける
function や variable は下記の形、
“`prettyprinted
/** @test {function} */
“`
class は下記の形でコメントを書くと、コードとユニットテストを関連付ける事ができる。
“`prettyprinted
/** @test {Class#Method} */
“`
> * [ESDoc を試す – アカベコマイリ](http://akabeko.me/blog/2015/07/esdoc/)
> * [ESDoc – A Documentation Generator For JavaScript(ES6)](https://esdoc.org/tutorial.html)
## 補遺
ユニットテストまでで一旦保留。
> * [power-assertの使い方 Node.js編 | Web Scratch](http://efcl.info/2014/0406/res3809/)
> * [power-assertでJavaScriptのテストをする ブラウザ編 | Web Scratch](http://efcl.info/2014/0411/res3820/)
> * [0からはじめるpower-assert – console.lealog();](http://lealog.hateblo.jp/entry/2014/12/01/121031)
[/markdown]