Shimsは、フレームワークのメソッドを含めたテストの一部としてメソッドの割り込みを行うことができるMicrosoft Fakes frameworkの一部である。これにより、侵入度の低いユニットテストを可能にすることがRich Czyzewski氏の記事“ASP.NET MVC4における非侵襲的ユニットテスト – Microsoft Fakes Deep Dive”において紹介されている。
非侵襲的ユニットテストとはなんなのだろう?Rich氏はFormsAuthentication.SignOut()を呼び出す簡単なサンプルを紹介している。FormsAuthenticationは、テスト実行時には初期化されていないHttpContextに依存しているため、これまでは分離クラスでラップされたオブジェクトを呼び出してユニットテストを実行する必要があった。テストを行うだけのために設計を変更することは煩わしい。
Shimsは別の言い方をすると、テストを容易にするためだけにラップしたクラスを作るのではなく、FormsAuthentication.SignOut()に割り込むことができる。
新しいMicrosoft Fakes Frameworkにおいて、Shim Typesは、割り込みに使うことができ、すべての種類のメソッド呼び出しを置き換えることができる -
- 静的メソッド
- インスタンスメソッド(すべてのインスタンスまたは、一部のインスタンス)
- 通常または、静的コンストラクタ
Shimsはまた、インターフェイスにフェイククラスをバインドすることもできる。
Fakes FrameworkはNUnitを含むユニットテストフレームワークで利用することができる。 Rich氏はまた、非常に近い機能を持つVS 2010のMolesテクノロジとVS 11で提供されるFakesとの比較を紹介している。