Ich versuche einige HtmlHelper
Erweiterungsmethoden zu testen, die ich geschrieben habe. Mein erstes Problem war, wie man eine HtmlHelper
Instanz erstellt, aber ich habe das mit diesem Code gelöst:
Einige meiner Tests funktionieren jetzt einwandfrei, aber es gibt einen Test, der eine Ausnahme auslöst. Der Test ist wie folgt definiert:
%Vor% Die Methode EditorFor
ist meine Erweiterungsmethode. Irgendwo in dieser Methode wird der folgende Aufruf ausgeführt:
Wenn dieser Code von meinem Komponententest ausgeführt wird, wird die folgende Ausnahme ausgelöst:
%Vor% Der Code schlägt also in ScopeCache.Get
fehl, aber warum? Hat jemand eine Idee, wie man das löst?
Am Ende habe ich mich mit dem Quellcode von ASP.NET MVC befasst. In ihrem Code testen sie auch HtmlHelper
Instanzen. Dazu verwenden sie eine Dienstprogrammklasse namens MvcHelper
, die bequeme Methoden zum Erstellen einer neuen HtmlHelper
-Instanz mit einem korrekt vorbereiteten HTTP-Kontext bietet.
Nachdem ich den Code, den ich nicht brauchte, entfernt habe, habe ich die folgende Klasse bekommen:
%Vor%Mit dieser Hilfsklasse wurde mein Code korrekt ausgeführt.
Ich habe eine Beschreibung für die komplette Helferklasse erstellt, um eine einfache Einbindung in Ihr Projekt zu ermöglichen: Ссылка
Sieht so aus, als müsstest du wahrscheinlich auch den HttpContext überspielen.
Tags und Links asp.net-mvc c# unit-testing html-helper