2009-08-10 6 views
0

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 

Répondre

5

Vous devez ajouter une référence à System.Web.Abstractions.

+0

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

+0

Oh, je vois! Il se trouve dans l'espace de noms System.Web, mais pas dans l'assembly System.Web. C'est confus! – CoderDennis

1

Avez-vous inclus l'assembly System.Web.Abstractions et importé System.Web?

Questions connexes