適切な自動テストのためには、単体テストフレームワークはふたつの重要な条件をクリアする必要がある。第一に作成したテストが使うライブラリの品質が良いこと。そして、第二にそのフレームワークが自分のツールチェーンと一緒に使えることだ。例えば.NET開発者にとっては、IDE内やビルドスクリプト内でJavaScriptのテストが実行できることだ。ほとんどのフレームワークが第一の条件だけに注力しているのに対して、Stephen Walther氏は第二の条件を満たすソリューションを作成してきた。
Stephen Walther氏の設計全体はJavaScriptの単体テストをVisual Studioに統合するという記事で見れる。ここでは主要な部分を概括する。
最も重要なのはこの設計にはブラウザコンポーネントがないということだ。これによって興味深い影響がある。
- ブラウザを起動しなくていいので、テストが速く実行できる。
- さらに環境が純粋なので、テストエンジンに明示的にインポートできるコードだけテスト対象にできる。ブラウザの環境に汚染されることはない。
- ブラウザが不要なきれいな環境なので、DOMやその他のウェブ仕様のオブジェクトにアクセスしなくていい。
- 純粋なJavaScriptのライブラリとして完璧であるが、UIのテストには全く向いていない(ウェブ仕様のオブジェクトのモック作成に大きな投資をすることでこの状況が変えられるかもしれない)。
どんな独立したJavaScriptエンジンでも氏の目的に利用することができるだろうが、実際に氏が選んだのはIE、Windows Script Host、クラシックなASPで共有されているJScriptエンジンだ。JScriptエンジンにはWindows Script InterfaceやMicrosoft Script Controlを通じて.NETから利用できるという利点がある。
氏はとてもプリミティブなJavaScriptのテストライブラリで、これはJScriptエンジンとMSTestフレームワークをブリッジする。設計が単純なので、この方法を使えば、どんなJavaScriptのテストライブラリやJavaScriptエンジンでも自動テストと統合することができそうだ。