javascriptのテスト関連ライブラリーとその概要について説明。雑記。
以下のサイトが、javascriptのテスト関連libraryについて、一番まとまってると思った。
正直以下のサイトを読めるなら、最近のjavascriptのテスト関係の基礎が全部わかるだろう。
CIツールやテストランナーについては特に記述されておらず、完全にライブラリーの説明をざっとされるのですごくわかりやすいと思う。
とりあえず、テストに関して全く知らない人たちに何が出来るかというのを見せるのに良い資料だと思う。
興味を持ったら原文を読みにいきましょう。
blog.imaginea.com
↑で紹介されているライブラリーの概要。
英語が苦手な人向けに読む前にライブラリーについて概要を日本語で書いておく。
ライブラリー名 | 説明 |
---|---|
Mocha | Rspec形式でテストを書けるようにするやつ describe → it みたいなテスト |
Chai | assertの代わりにexpectやshouldで書けるようにするBDD御用達の糖衣構文ライブラリー |
Supertest | 外部サーバーのURLにアクセスする際のテストを綺麗にする奴。 |
Sinon | stub,mock,spyを導入してくれるすごいやつ。導入するとダブルテストが出来る。 |
Nock | URLアクセスに特化したstub。sinon.fakeServerより綺麗かも。 |
Rewire | 通常アクセスできないprivate methodはテストできないけど、private methodを呼び出せるようにするrequireぽいの。 |
Istanbul | コードカバレッジ計測ツール |
ちなみに、上記のライブラリのメジャー度を掴んでもらうと。
2017/08/16のgithubのstarの数がこんな感じ。
Istanbul
とか余り名前を聞いたことがなかったけど、supertest
よりも上でちょっとびっくり。
結構多くの人がコードカバレッジ計測とかやってるんですね。
ちなみに検索上位に出てくる貴重な日本語文献は数えるほどしかないですね。
【補足】外部URLにアクセスせずに、(スタブして)正規の返り値を取得して開発する方法について
とりあえず、mochaを使うことを前提として調べた感じ、
URLにアクセスする際に簡素にスタブに書く方法として、
nock [nodejs限定]
,sinon.fakeServer [web browser限定]
があるみたい。
どっちも両方の環境にぶち込めそうだけど、工夫が必要かも。
sinon.fakeServer
sinon.fakeServerはとりあえず公式を見たほうが早い。 ただし、sinon.fakeServerはnodejsで動かすために工夫が必要らしいので注意。
正直、nockでブラウザ環境もnodeの環境も整えてしまった方が楽そう。ただしBrowserifyについてキチンと勉強しなきゃ行けないかな
雑感
Istanbul
。日本語文献があんまり出てこないから、海外で多く使われているのかもしれない。
javascriptでコードカバレッジをしようという需要自体が少ないのかな?
逆にマイナー[star 331]なJScover
については10件ほど出てくるようです。
(多分codezineのこの記事のせい)
それでもすごく少ないと思いました。
facebook/jest
掘り下げて調べるとfacebook/jest
が出てきました。[star 11089]
これは最近出たツールでmochaを置き換えるライブラリーみたいです。
mochaでカバレッジをしようとしようとしなければいい、なるほど。
Istanbul
をベースにしてfacebook/jest
が作られててJestは大量並列テストが可能なんですね。
しかも、TypeScript
にも対応している。
良さげなライブラリですね。
注目記事
あと最後に見つけたけど、このページが非常に参考になりました。
ちょっと長いけど2017年に注目すべきjavascriptのツールについて網羅されていて、日本語なので是非。
postd.cc