2009-04-13 22 views
8

me estoy burlando a cabo HttpRequestBase para que pueda crear un HtmlHelper en el código de prueba y escribir pruebas alrededor de los métodos de extensión HtmlHelper. Lo hago como parte del código de configuración:'La ruta de acceso virtual relativa aplicación '~ /' no está permitido aquí' en la prueba de la unidad de 2K3 construir servidor pero no máquinas dev XP/Vista

httpRequestBase.Stub(h => h.ApplicationPath).Return("~/"); 
httpRequestBase.Stub(h => h.AppRelativeCurrentExecutionFilePath).Return(appPath); 
httpRequestBase.Stub(h => h.PathInfo).Return(""); 

cuales en dos máquinas dev (uno funcionan XP, una Vista de 64 bits) funciona bien. Sin embargo, en una máquina de construcción de Windows Server 2003 la prueba falla cuando llamo a RouteLink() en HtmlHelper, así:

System.ArgumentException: La ruta virtual relativa de la aplicación '~ /' no está permitida aquí. en System.Web.VirtualPath.Create (opciones String virtualPath, VirtualPathOptions)

En ambos casos, estoy usando NUnit 2.4.8 y la GUI de NUnit como el corredor de prueba. Todo lo demás es idéntico, excepto el sistema operativo, por lo que puedo decir: misma versión de RhinoMocks (3.5), misma versión de ASP.NET MVC (RTM). Traté de copiar los archivos binarios desde una máquina de desarrollo en lugar de usar los que están en la máquina de desarrollo, y no hace la diferencia.

Cuando cambio la primera línea en el código de configuración para esto:

httpRequestBase.Stub(h => h.ApplicationPath).Return("/"); 

se supera la prueba en todas las máquinas.

¿Alguna idea de por qué?

Respuesta

10

"~ /" no es un valor válido para ApplicationPath. El objetivo de la sintaxis "~ /" es permitirle especificar las URL que son relativas a ApplicationPath.

Para un sitio arraigado, el valor debe ser "/". Para sitios en directorios virtuales, debe ser un valor como "/ mysite".

Cuestiones relacionadas