Desidero caricare un file XML esterno in un test di unità per testare un codice di elaborazione su tale XML. Come ottengo il percorso del file?Come eseguire il MapPath in un test di unità in C#
Di solito in una web app che vorrei fare:
XDocument.Load(Server.MapPath("/myFile.xml"));
Ma ovviamente nel mio test di unità non ho alcun riferimento alla Server o HttpContext così come posso tracciare un percorso in modo che non devo specificare il percorso completo?
UPDATE:
Voglio solo mettere in chiaro che il codice In realtà sto testando è per una classe di parser XML, qualcosa di simile:
public static class CustomerXmlParser {
public static Customer ParseXml(XDocument xdoc) {
//...
}
}
Quindi, per testare questo ho bisogno analizzare un XDocument valido. Il metodo testato non accede al file system stesso. Potrei creare l'XDocument da una stringa direttamente nel codice di test, ma ho pensato che sarebbe stato più semplice caricarlo da un file.
Qual è il vantaggio di Interfaccia qui ?. Invece, possiamo semplicemente creare 2 file di classe e chiamarli di conseguenza 1 da un'app reale e 1 dall'endpoint del test? Qualcuno può spiegare il vantaggio di questa interfaccia qui? –
Utilizzando le classi è necessario decidere di ereditare una classe dall'altra per rendere felice il sistema di tipi. Avere l'implementazione del test eredita da quella reale o viceversa non è davvero una soluzione ideale. Facendolo in questo modo non è necessario che le implementazioni reali e di test vengano a conoscenza l'una dell'altra, ma hanno solo un'interfaccia comune che devono soddisfare. – kastermester