ホーム > ASP.NET, Visual Basic > HttpContextをUnitTestで使う

HttpContextをUnitTestで使う


UnitTestだとHttpContextが空になるんだけれど、UnitTest中にRequest.Formってどうにか参照できないの?って聞かれました。

サービスクラスの中でHttpContextやHttpRequestを直に参照しないような設計をすればいいんですが、今からだと難しいらしいので、昔の記憶をほじくり返してみる。そういえばHttpSimulatorってのがありましたね。前はC#のソースからビルドしたような気がするけれど、今だとDLLがNugetで公開されているんですね。

HttpSimulator 1.0.0<https://www.nuget.org/packages/HttpSimulator/>

テストプロジェクトにNugetでImstall-Package HttpSimulatorをしたら、HttpSimulatorクラスを作って、Formの値やSessionの値を設定して、SimulateRequestを呼び出してあげましょう。SimulateRequestした後ならHttpContext.CurrentからFormやRequestにアクセスすれば何事のなく利用できます。

<TestClass()> 
Public Class Class1Test
<TestMethod()>
Public Sub RequestFormのxとyの値を足した値が取得できること()
Using simulator = New HttpSimulator().
SetFormVariable("x", "1").
SetFormVariable("y", "2").
SimulateRequest()

Dim target = New Class1()
Assert.AreEqual(3D, target.FormCalc())
End Using
End Sub
End Class
Public Class Class1
Public Function FormCalc() As Decimal
Return Integer.Parse(HttpContext.Current.Request.Form("x")) +
Integer.Parse(HttpContext.Current.Request.Form("y"))
End Function
End Class

広告
カテゴリー:ASP.NET, Visual Basic
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。