MSTest使用時のオブジェクトのモック
-
08-07-2019 - |
質問
MSTestを始めたばかりです(少なくともVS 2008のテストツールに違いはありますか?)
セッションオブジェクトを使用するコードをテストしたい。明らかにHttpContextがなく、単にHttpContextを作成できないため、コードはNullReferenceExceptionで失敗します。
このコードは単にテストできませんか?
解決
テストしようとしているWebプロジェクトの種類(MVCまたはWebForms)はわかりませんが、 Scott Hanselmansモックヘルパーを使用してHttpContextBaseクラスをモックアウトします。 Rhino.Mocks および Moq はどちらも無料です。
他のヒント
テスト不可については知りませんが、テストするのは確かに難しいです。 typemockを使用すると、事実上すべてのモックとスタブを作成できます。ただし、無料ではありません。
セッションの呼び出しを別のオブジェクト内にラップし、それをインターフェイスの後ろに隠すこともできます。その後、そのインターフェイスをコードに挿入できます。テストのために、モック実装を注入できます。これにより2つのことが実現します。コードのテストが容易になり、Asp.Netのセッション実装に縛られなくなります。
セッションオブジェクトは、テストするロジックにどの程度関与しますか?たとえば、asp.netが使用している値だけの場合は、プレゼンテーションパターンでこれを抽象化します(テストの作成が簡単になります)
たとえば、次のロジックは、セッション情報をビューの実装にプッシュすることで簡単にテストできます
If UserObject.IsActive() Then
_View.SessionActive = True
Else
_View.SessionActive = False
End If
VS 2010では、 Microsoft Moles はモッキングのオプションです。
VS 2012では、 Microsoft偽物はモックのオプションです。