Ich möchte eine externe XML-Datei in einem Komponententest laden, um einige Verarbeitungscode für dieses XML zu testen. Wie bekomme ich den Pfad der Datei?Wie MapPath in einem Komponententest in C#
die Regel in einer Web-Anwendung würde ich tun:
XDocument.Load(Server.MapPath("/myFile.xml"));
Aber offensichtlich in meinem Unit-Test habe ich keinen Hinweis auf Server oder Httpcontext so wie kann ich einen Weg Karte, so dass ich nicht angeben muß der vollständige Weg?
UPDATE:
Ich möchte nur klarstellen, dass der Code teste ich eigentlich für einen XML-Parser-Klasse ist, so etwas wie:
public static class CustomerXmlParser {
public static Customer ParseXml(XDocument xdoc) {
//...
}
}
So dies zu testen ich brauche ein gültiges XDocument analysieren. Die zu testende Methode greift nicht auf das Dateisystem selbst zu. Ich könnte das XDocument aus einem String direkt im Testcode erstellen, aber ich dachte, es wäre einfacher, es einfach aus einer Datei zu laden.
Was ist der Vorteil von Interface hier ?. Können wir einfach 2 Klassendateien erstellen und sie entsprechend 1 von einer tatsächlichen App und 1 vom Testendpunkt aufrufen? Kann jemand bitte den Nutzen dieser Schnittstelle hier erklären? –
Durch die Verwendung von Klassen müssen Sie sich entscheiden, dass eine Klasse von der anderen erbt, um das Typsystem glücklich zu machen. Entweder Ihre Testimplementierung erbt von der echten oder umgekehrt ist nicht wirklich eine ideale Lösung. Auf diese Weise müssen Sie Ihre realen und Test-Implementierungen überhaupt nicht voneinander unterscheiden - sie haben nur eine gemeinsame Schnittstelle, die sie erfüllen müssen. – kastermester