2009-08-10 16 views
0

GetHttpContext関数をVB.NETでHtmlHelperTest.csから実装しようとしていますが、Rhino Mockを使用していますが、 "Type 'HttpContextBase'定義されていません。"コンパイラはそれをHttpContextに変更することを提案していますが、それを行うと、密閉されたクラスを嘲笑することができないというランタイムエラーが発生します。VB.NETでHttpContextBaseタイプが見つかりません(ASP.NET MVCでRhino Mockを使用しています)

私のテストプロジェクトはSystem.Webを参照し、その名前空間もインポートします。 HttpContextBaseタイプを私が賢明なコードに見えるようにするために何か必要なことはありますか?

ここにコードがありますが、問題との関連性はわかりません。

Imports NUnit.Framework 
Imports Rhino.Mocks 
Imports System.Web.Routing 

<TestFixture()> _ 
Public Class XhtmlHelperTest 

    Public Const AppPathModifier = "/$(SESSION)" 

    'Various test methods here...' 

    Private Shared Function GetHttpContext(ByVal appPath As String, _ 
              ByVal requestPath As String, _ 
              ByVal httpMethod As String, _ 
              Optional ByVal protocol As String = "http", _ 
              Optional ByVal port As Integer = -1 _ 
              ) As HttpContextBase 
     Dim mockHttpContext = MockRepository.GenerateMock(Of HttpContextBase)() 

     If Not String.IsNullOrEmpty(appPath) Then 
      mockHttpContext.Expect(Function(hc) hc.Request.ApplicationPath).Return(appPath) 
     End If 

     If Not String.IsNullOrEmpty(requestPath) Then 
      mockHttpContext.Expect(Function(hc) hc.Request.AppRelativeCurrentExecutionFilePath).Return(requestPath) 
     End If 

     Dim uri As Uri 

     If port >= 0 Then 
      uri = New Uri(protocol + "://localhost" + ":" + port) 
     Else 
      uri = New Uri(protocol + "://localhost") 
     End If 

     mockHttpContext.Expect(Function(hc) hc.Request.Url).Return(uri) 

     mockHttpContext.Expect(Function(hc) hc.Request.PathInfo).Return("") 

     If Not String.IsNullOrEmpty(httpMethod) Then 
      mockHttpContext.Expect(Function(hc) hc.Request.HttpMethod).Return(httpMethod) 
     End If 

     mockHttpContext.Expect(Function(hc) hc.Response.ApplyAppPathModifier(Arg(Of String).Is.Anything)).WhenCalled(Function(invocation) AppPathModifier + invocation.Arguments(0)) 

     Return mockHttpContext 
    End Function 

End Class 

答えて

5

System.Web.Abstractionsへの参照を追加する必要があります。

+0

ありがとうございました。 Visual StudioのMvcDevのコードを見ると、そのクラスはSystem.Webにあると言いました。 – CoderDennis

+0

ああ、私は見る!これはSystem.Web名前空間にありますが、System.Webアセンブリにはありません。それは混乱している! – CoderDennis

1

System.Web.Abstractionsアセンブリを組み込み、System.Webをインポートしましたか?

関連する問題