私は MSTest (または少なくとも VS 2008 テスト ツール、違いはありますか?) を使い始めたばかりです。
セッション オブジェクトを使用するコードをテストしたいと考えています。明らかに、私は HttpContext を持っておらず、単純に作成することもできないため、コードは NullReferenceException で失敗します。
このコードは単にテスト不可能ですか?
私は MSTest (または少なくとも VS 2008 テスト ツール、違いはありますか?) を使い始めたばかりです。
セッション オブジェクトを使用するコードをテストしたいと考えています。明らかに、私は HttpContext を持っておらず、単純に作成することもできないため、コードは NullReferenceException で失敗します。
このコードは単にテスト不可能ですか?
テストしようとしている Web プロジェクトのタイプ (MVC または WebForms) はわかりませんが、 Rhino.MocksとMoqの両方に無料の例があるScott Hanselmans モック ヘルパーを使用して HttpContextBase クラスをモック アウトできるはずです。.
テスト不能についてはわかりませんが、テストするのは確かに難しいです。typemock を使用すると、事実上すべてのモックとスタブを作成できます。しかし、それは無料ではありません。
セッションへの呼び出しを別のオブジェクト内にラップし、それをインターフェイスの背後に隠すこともできます。次に、そのインターフェイスをコードに挿入できます。テストのために、モック実装を注入できます。これにより、コードのテストが容易になり、Asp.Net のセッション実装に縛られなくなります。
テストするロジックで、セッション オブジェクトがどのレベルで関与しているか。たとえば、それが asp.net が使用している単なる値である場合、プレゼンテーション パターンの 1 つを実装して、これを抽象化することができます (そして、テストを簡単に記述できます)。
たとえば、以下のロジックは、セッション情報をビューの実装にプッシュすることで簡単にテストできます。
If UserObject.IsActive() Then
_View.SessionActive = True
Else
_View.SessionActive = False
End If
VS 2010 では、Microsoft Molesはモックのオプションです。
VS 2012 では、Microsoft Fakesはモックのオプションです。