【问题标题】:HttpContextBase type not found in VB.NET (using Rhino Mocks with ASP.NET MVC)在 VB.NET 中找不到 HttpContextBase 类型(使用带有 ASP.NET MVC 的 Rhino Mocks)
【发布时间】:2009-08-10 15:21:05
【问题描述】:

我正在尝试使用 Rhino Mocks 在 VB.NET 中从 HtmlHelperTest.cs 实现 GetHttpContext 函数,但我得到“未定义类型 'HttpContextBase'。”编译器建议将其更改为 HttpContext,但是当我这样做时,我会收到一个无法模拟密封类的运行时错误。

我的测试项目引用 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

【问题讨论】:

    标签: asp.net-mvc vb.net nunit rhino-mocks


    【解决方案1】:

    您需要添加对 System.Web.Abstractions 的引用。

    【讨论】:

    • 谢谢,成功了。当我在 Visual Studio 中查看 MvcDev 的代码时,它说该类在 System.Web 中。
    • 哦,我明白了!它位于 System.Web 命名空间中,但不在 System.Web 程序集中。这令人困惑!
    【解决方案2】:

    您是否包含了 System.Web.Abstractions 程序集并导入 System.Web?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 2011-01-20
      相关资源
      最近更新 更多