How to unit-test-code, der verwendet HostingEnvironment.MapPath
Ich habe einige code, der verwendet HostingEnvironment.MapPath
würde ich gerne unit-Tests.
Wie kann ich setup HostingEnvironment
so dass es gibt einen Pfad und nicht null
in meiner unit Tests (mstest) Projekt?
- Warum würden Sie einen code, hängt von
HostingEnvironment.MapPath
in einem ASP.NET MVC-Anwendung, wo Sie haben Zugang zu Objekten, wieHttpServerUtilityBase
die Ihnen erlauben, dies zu erreichen und die leicht verspottet und Gerät getestet? Vielleicht könnten Sie zeigen diesen code und erklären das Szenario, so dass wir es verbessern? - Weil ich nicht wusste, von
HttpServerUtilityBase
. Kannst du ein Beispiel?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum würden Sie haben einen code, hängt davon ab, HostingEnvironment.MapPath in einem ASP.NET MVC-Anwendung, wo Sie haben Zugang zu Objekten, wie HttpServerUtilityBase, die Ihnen erlauben, dies zu erreichen und die leicht verspottet und Gerät getestet?
Nehmen wir ein Beispiel: eine controller-Aktion, die mit der abstrakten Server-Klasse, die wir wollen, unit-test:
Nun, es gibt viele Möglichkeiten, um unit-test dieser controller Aktion. Persönlich ich mag mit dem MVcContrib.TestHelper.
Aber mal sehen, wie wir können dies tun, mit einem mocking framework out-of-the-box. Ich benutze Rhino Mocks für dieses Beispiel:
ApiController
und nichtMVC
eine?Gut ich Schreibe einen test heute für den code, den ich nicht kontrollieren und Sie verwendet
so, hier ist ein C# - Reflexion hacken zu setzen, dass der Wert
Wird es davon abhängen, was Spott oder isolation-Frameworks. Vielleicht möchten Sie sich in entweder a) erstellen einer wrapper-Typ um die statische Eigenschaft, die er verspottet, oder b) mit einem framework mock-statische Eigenschaften - z.B. Maulwürfe oder Typemock Isolator
Einfach diesen code verwenden..
Machen Sie einen neuen Ordner namens Verweisen Sie in das root-Verzeichnis und fügte hinzu, Ihre Datei in diesem Ordner.
Verwenden Sie diese