blog.bouzuya.net

2016-06-16 bouzuya/beater 0.4.0 をつくった

bouzuya/beater 0.4.0 をつくった

bouzuya/beater は alt mochajs/mocha を意識した simple な test framework 。yosuke-furukawa/eater に影響されてつくりはじめた。

0.4.0 の変更は browser support で、利用者側に影響のある変更を含んでいる。

API の変更など詳細は bouzuya/beater の README を参照してほしい。

まず browser support とは何か。ぼくの中では browser の上で beater および beater 用 test を動かし、結果を表示できることが browser support だ。browser で beater を動かすために、 browserify / webpack などでの require() の変換は許容する。また browser support は beater が browser を動かすことではなく、あくまでも browser の上で beater を動かすことだ。

では、なぜ browser support が必要なのか。それは beater が "post mocha" を目指す (2016-06-08) からだ。いまの気持ちとしては "alt mocha" 。mocha の代替の選択肢を目指したい。"alt mocha" のほかには Kyoto.js team での意見を受けた (2016-06-09) ことも理由のひとつだ。

browser support の過程でいくつかのことを学んだ。 Node.js の標準 library や、それに依存する npm package 、動的な require() (2016-06-10) は browser では思った通りには動かせない。そういう当たり前のことだ。

これは eater の前提である file 単位での test という仕様の維持が難しいことを意味する。 file 単位での test を避けるために test を ES Module 化する案 (2016-06-13) を挙げた。この案は使い勝手の面で数人から否定されたため、却下した (将来的にはこの案でもつくってみたい) 。最終的には beater の instance を test 間で共有する helper 生成案に落ち着いた。

また Node.js への依存を切り離す必要性から bouzuya/beater-clibouzuya/beater-cli-reporter などの npm package を明確に切り離した。

現状 beater 0.4.0 では browser でなんとか動く状態にまでは持っていけた。見せかたなどに問題があるため、正直なところ、まだいまひとつだ。

今後の課題は次のとおりだ。

  • 具体例の拡充
  • document の整備
  • beater の Error Handling の強化
  • Reporter 向けの Error 情報の強化
  • bouzuya/beater-html-reporter の強化
  • 他の assertion / test-double / coverage / reporter との連携

関連記事: