blog.bouzuya.net

2016-06-08 bouzuya/beater をつくった

beater logo

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 と異なり、stderr -> Error に変更した。
    • eater の simple rule を破棄した。
    • file ごとの出力を reporter が制御できる。
  • eater と異なり、test() の使用を前提とした。
  • eater と異なり、TypeScript を想定し、.d.ts を提供する。

eater の観点を捨てて、乱暴に説明するなら avajs/ava の機能縮小版だ。power-assert, babel を外に出して test の API や対応する戻り値を減らしている。

まだ絶賛開発中なので (beta) をつけているが、ぼくの Node.js 環境における標準の test framework/runner にしたいと考えている。目指すは post mochajs/mocha だ。

ぜひ bouzuya/beater を試してみて、意見をほしい。意見がなくても star がほしい、それはもう真剣に。