Jasmine + Sinon.js を使って Backbone.js アプリケーションをテストするチュートリアルを読みました

JavaScriptのためのBDDテストフレームワーク「Jasmine」と、簡単にスタブやモックオブジェクトを導入する「Sinon.js」を使って、JavaScriptのためのMVCフレームワークである「Backbone.js」で書かれたアプリケーションをテストするチュートリアル記事を読みました。

全3部構成。英語。

内容・感想

Backbone.jsを使ってToDoアプリを開発する過程で、「Model」「Collection」「Router」「View」の各構成要素のユニットテストをどのように書けばいいのか、しっかり丁寧に解説されていました。

ビューのテストは難しいというイメージがありますが、Jasmineのjqueryプラグインを使うことでビューのテストも容易に行えます。他にも様々なプラグインが公開されている模様。また、JasmineではRSpecライクな文法でスペックを書くことができるので、とてもとっつきやすく感じました。

個人的にはSinon.jsの存在を知れたことが大きな収穫。本チュートリアルではユニットテストにフォーカスをあてているので、できる限りオブジェクト間の依存関係を少なくしたいという意図がありますが、Sinon.jsでモック/スタブオブジェクトを作成することで対処しています。

さらに、JavaScriptではイベントハンドラのやり取りがコードの中で頻繁に登場するので、単純なアサーションだけではテストが十分に行えないという状況が発生しがちですが、これもSinon.jsでスパイオブジェクトを作成することで対処できます。

他にもSinon.jsには、仮想的なサーバとして機能するオブジェクトを作成したり、タイマーの秒数を無理やり進めたりといった、JavaScriptで書かれたWebアプリケーションをテストする上で非常に役立つ機能が搭載されており、もうこれからは「必須ライブラリ」という印象。

チュートリアルを全部読んだ後、Jasmine + Sinon.jsを早速自分のアプリに導入したいと思いました。チュートリアルは英語ですが、比較的さらりと読めるボリューム感なので、興味がある方はぜひ読んでみてください。

それでは。