2016-06-13 bouzuya/beater@0.4.x の API をかんがえた
bouzuya/beater の設計を検討したことを書く。
beater の browser support を進めている。2016-06-10 に書いたとおり、想定どおりに動かなかったため迷走している。
最終的な 2 案は bouzuya/beater#3 にある。それぞれがまったく異なる設計になっている。
案 1 は Test
を export する ES Modules を使うものだ。この案の良い点は test()
が副作用を持たないことだ。あくまでも test()
は Test
を返す関数であって、その実行はしない。Test
を run(tests);
のように実行する。reporter
を指定するなら run(tests, reporter);
だろうか。
import { test } from 'beater';
const t = test('foo 1', () => {
assert(1 === 1);
});
export default t;
案 2 は test()
で Test
を実行する。同一 instance でないと reporter
をまとめられないため、 const { test } = beater();
は ./test/helper.ts
などの 1 file にする必要がある。reporter
を指定するなら const { test } = beater(reporter);
だろう。
import beater from 'beater';
const { test } = bearter();
test('foo 1', () => {
assert(1 === 1);
});
案 1 は export default t;
などの記述を嫌がる声があったのだけど、個人的には案 1 のほうが最終的に扱いやすくなるとは思う。しかし、今回は案 2 で進めようと思う。こちらのほうがよりありふれた test framework に近いからだ。だからこそ案 1 を選びたい気持ちはあるのだけど、まずは post mocha として使ってもらえる test framework を目指したい。