J'essaye d'implémenter la fonction GetHttpContext
de HtmlHelperTest.cs dans VB.NET en utilisant Rhino Mocks, mais je reçois "Type 'HttpContextBase' n'est pas défini." Le compilateur suggère de le changer en HttpContext
, mais quand je le fais, j'obtiens une erreur d'exécution indiquant qu'une classe scellée ne peut pas être raillée.Type HttpContextBase introuvable dans VB.NET (utilisant Rhino Mocks avec ASP.NET MVC)
Mon projet de test fait référence à System.Web et importe également cet espace de noms. Est-ce qu'il y a autre chose que je dois faire pour que le type HttpContextBase
soit visible par le code que je veux?
Voici le code, mais je ne sais pas à quel point il est pertinent au problème.
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
Merci, c'est ce que j'ai fait. Quand j'ai regardé le code de MvcDev dans Visual Studio il a dit que la classe était dans System.Web. – CoderDennis
Oh, je vois! Il se trouve dans l'espace de noms System.Web, mais pas dans l'assembly System.Web. C'est confus! – CoderDennis