忍んでいる肉球の足跡

プログラムに関連することを雑多に扱います

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の数がこんな感じ。

f:id:nukisashineko:20170824012728p:plain

現時点の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