Zunächst einmal bin ich mir bewusst, dass diese Frage gefährlich nahe dran ist: Wie man MapPath in einem Einheitstest in C#
Ich hoffe jedoch, dass es eine andere Lösung gibt. Mein Problem folgt:
In meinem Code habe ich ein Objekt, das validiert werden muss. Ich erstelle Unit-Tests für jede Validierungsmethode, um sicherzustellen, dass sie korrekt validiert wird. Ich erstelle Scheindaten und lade sie in das Objekt, um sie dann zu validieren. Das Problem ist, dass innerhalb der Validierung, wenn ein Fehler auftritt, ein Fehlercode zugewiesen wird. Dieser Fehlercode wird verwendet, um Informationen über den Fehler aus einer Xml-Datei mit Server.MapPath zu sammeln. Beim Versuch, die Xml-Datei abzurufen, wird jedoch eine Ausnahme ausgelöst, was bedeutet, dass die Datei nicht gefunden werden kann.
Da MapPath in meinem Validierungscode ist, und nicht meine Unit-Test, wie bekomme ich meine Unit-Test, um den Pfad zu erkennen? Ergibt diese Frage einen Sinn?
Fehlerzeile (in meinem Validierungscode, NICHT in meinem Einheitstest):
XDocument xdoc = XDocument.Load(HttpContext.Current.Server.MapPath("App_Data/ErrorCodes.xml"));
Vereinfacht: Der Unit Test ruft eine Methode in meinem Programm auf, die Server.MapPath aufruft, was dann fehlschlägt.