2016-06-08 bouzuya/beater をつくった
bouzuya/beater をつくった。bouzuya's eater で beater 。bouzuya 版 yosuke-furukawa/eater だ。eater のことは 2016-06-04 に書いた。
beater で書かれた test code は次のような雰囲気だ。
import * as assert from 'power-assert';
import { test, fixture } from 'beater';
test('simple test', () => {
assert(1 === 1);
});
test('async test', () => {
return new Promise(resolve => {
assert(2 === 2);
resolve();
});
});
const before = () => 3; // setup fixture (context)
const after = context => void 0;// clean up fixture (context)
test('before/after', fixture({ before, after }, context => {
assert(context === 3);
}));
bouzuya/beater は eater からぼくの欲しい部分を抜き出したものだ。
eater と比較すると次のような特徴がある。
- eater と同じく、file ごとに child process を割り当てる。
- eater と同じく、browser を想定しない。
- eater と同じく、
describe
/it
など global を汚す関数を提供しない。 - eater と同じく、
assert
を提供しない。 - eater と同じく、
--watch
を提供しない。 - eater と同じく、非同期を前提とする。
- eater と異なり、
done()
fail()
を提供しない。Promise
を返すと待つようにした。- 毎回
done()
を呼ばなくて済む。
- eater と異なり、
- eater と異なり、stderr -> Error に変更した。
- eater の simple rule を破棄した。
- file ごとの出力を reporter が制御できる。
- eater と異なり、
test()
の使用を前提とした。- eater の example を動かす想定を破棄した。
test()
を使う人にとっての Easy を想定する。
- eater の mock の開放不要を破棄した。
test()
単位に context の生成・破棄が必要になるため。
before
/after
のためのfixture()
を提供する。
- eater の example を動かす想定を破棄した。
- eater と異なり、TypeScript を想定し、
.d.ts
を提供する。
eater の観点を捨てて、乱暴に説明するなら avajs/ava の機能縮小版だ。power-assert
, babel
を外に出して test
の API や対応する戻り値を減らしている。
まだ絶賛開発中なので (beta)
をつけているが、ぼくの Node.js 環境における標準の test framework/runner にしたいと考えている。目指すは post mochajs/mocha だ。
ぜひ bouzuya/beater を試してみて、意見をほしい。意見がなくても star がほしい、それはもう真剣に。