Ich stieß auf ein Problem, als ich meinen HTML-Helfer testete. Grundsätzlich erstelle ich ein Raster mit vielen Zeilen, Spalten und verschiedenen Datentypen. In der Kopfzeile gibt es auch ein Bild, um den Benutzer darüber zu informieren, nach welcher Spalte die Daten sortiert sind. Aber wenn ich jetzt meinen Test schreibe (viel zu spät, aber besser spät als nie richtig ?!), bekomme ich diesen Fehler:
%Vor%"Der relative virtuelle Pfad der Anwendung '~ / Images / SortingArrowUp.png' kann nicht absolut gemacht werden, weil der Pfad zu Die Anwendung ist nicht bekannt. "
Wie kann ich das lösen? Ich kann verstehen, dass dies ein Problem während des Tests sein könnte, und das Bild ist möglicherweise nicht verfügbar und all das, aber was ist der richtige Weg, dies zu tun?
Der korrekte Weg besteht darin, UrlHelper.GenerateContentUrl
anstelle von VirtualPathUtility
aufzurufen. In Ihrem Hilfscode würden Sie so etwas tun:
Beim Komponententest müssen korrekt konnotierte Kontextobjekte übergeben werden. Sie müssen HttpContext.Request.ApplicationPath
vortäuschen - einen Dummy-App-Pfad zurückgeben, HttpContext.Response.ApplyAppPathModifier()
- nichts tun, HttpContext.Request.ServerVariables
- null zurückgeben, HttpContext.Request.Path
und HttpContext.Request.RawUrl
- einen Wert zurückgeben, der Sinn ergibt.
Sie können einfach diese Überladung verwenden:
%Vor% Dies ist, was UrlHelper.GenerateContentUrl
intern verwendet, und Sie müssen nur ApplicationPath
vortäuschen.
Tags und Links asp.net-mvc c# unit-testing html-helper virtual-path