Wie zu beheben Problem mit dem image-Pfad bei der Prüfung HtmlHelper?
Stieß ich auf ein Problem, wenn ich testen meiner HTML-Helper. Grundsätzlich bin ich erstellen ein raster mit vielen Zeilen, Spalten und verschiedene Arten von Daten. In der Kopfzeile gibt es auch ein Bild, um den Benutzer zu informieren, welche Spalte die Daten sortiert werden. Allerdings, wenn ich Schreibe, dass mein test jetzt (viel zu spät, aber besser spät als nie richtig?!), Ich bekomme diese Fehlermeldung geworfen:
"Die Anwendung der relativen virtuellen Pfad
'~/Bilder/SortingArrowUp.png' wurde nicht
werden verabsolutiert, weil der Pfad zu
die Anwendung ist nicht bekannt."
var imgPath = VirtualPathUtility.ToAbsolute("~/Images/SortingArrowUp.png");
Wie kann ich dieses Problem lösen. Ich kann verstehen, wie das könnte ein Problem sein, während der test, und könnte das Bild nicht verfügbar sein, und alle, aber was ist der richtige Weg, das zu tun diese dann?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der richtige Weg ist der Aufruf
UrlHelper.GenerateContentUrl
stattVirtualPathUtility
. In Ihrer Helfer-code, den Sie tun würde, so etwas wie dieses:Wenn unit-Tests, die Sie haben, um richtig verspottet Kontext-Objekte. Sie müssen simulieren
HttpContext.Request.ApplicationPath
- wieder einige dummy-app-Pfad,HttpContext.Response.ApplyAppPathModifier()
- nichts tun,HttpContext.Request.ServerVariables
- null zurück,HttpContext.Request.Path
undHttpContext.Request.RawUrl
- wieder etwas Wert, das macht Sinn.Können Sie nur mit dieser überladung:
Dies ist, was
UrlHelper.GenerateContentUrl
intern verwendet, und Sie brauchen nur zu verspottenApplicationPath
.HttpContextBase currentContext = new HttpContextWrapper(HttpContext.Current);