TypeScript製ライブラリのテストフレームワークをmochaからtapeに切り替えた
普段テストは、Node.jsのコードはmocha・ブラウザ向けのコードはkarma(jasmine)で書くことが多いんだけど、たまには別のライブラリも試してみたいな〜と思ってたところにこの記事を読んだ
Why I use Tape Instead of Mocha & So Should You
1年半くらい前の記事で、要約すると設定ファイル不要でグローバルな変数やテスト間で共有される変数を持たないシンプルなテストフレームワークなのでMochaよりtapeに乗り換えた、テストは極力複雑にならないようにして(その方がデバッグも容易、みたいな文脈もある気がする)もっとプロダクトの質に注力しよう、みたいな感じか。
テストフレームワークやらランナーやらの設定でごちゃごちゃなってるなというのは、前々から感じていたことではあったので、自分で公開している小さなライブラリのmochaを使って書いていたテストコードをtapeに切り替えてみた。
前に書いたこのポストで作ったやつ。
元々のコードはこんな感じ
RxJSのmarbleを使ってテストしてるのでちょっと論旨がズレそうな気もする…
|
|
変更後はこんな感じ
|
|
コード全体はココにある
たしかこの本で読んだんだったと思うけど、テストフレームワークの目的は入力に対して期待した出力が得られているか確認する単なる関数に過ぎない、みたいな話があって、自前のassertion関数を実装するように促されたりしていた。tape
はそういう思想にわりと近い感じがしていて、登場人物がとても少なく且つグローバルな変数を使っていたりしないので、テストファイルの中で全てが完結しているのが良い感じだと思った。
テストリポーターを任意のものにスイッチするのが
|
|
みたいにパイプで流せるのも良い。
プロジェクト毎に色々変わったことをしようとするとまた話が変わってくるのかも知れないが、小さなライブラリのために使うのであれば、軽く導入できて良いように思った。
あとブラウザでテストを実行するのは試してみてないので、それは別途試してみたい。