Jak sugeruje rwwilden, życie jest dużo łatwiejsze, jeśli używasz API opartego na strumieniu zamiast nazwy opartej na nazwach plików. Używanie szyderstwa nie jest tutaj zbytnio odpowiednie, IMO; nie robisz "testowania protokołów" - potrzebujesz tylko źródła danych.
Można również przeciążenie, która jest prosta metoda narzędzie:
public Result ParseXml(string file)
{
using (Stream stream = File.OpenRead(file))
{
return ParseXml(stream);
}
}
Można było wtedy dość bezpiecznie nie Test że metoda - to nie ma istotnego logiki w nim, mimo wszystko.
Teraz mógł testu API oparte strumień przy użyciu ciąg zakodowane w kodzie, a następnie wywołanie Encoding.UTF8.GetBytes(xml)
MemoryStream
i budowanie wokół powstałego tablicy bajtów ... ale generalnie wolą używać oddzielnych plików danych w moim projekcie testowym. Ustaw typ zawartości na "zasób osadzony", a następnie użyj Assembly.GetManifestResourceStream
, aby uzyskać strumień do pliku testowego.
Jeśli jednak jest to normalnie normalny plik XML, czy na pewno chcesz samemu wykonać parsowanie? Czy jest jakikolwiek powód, dla którego nie chcesz zostawiać tego w ramce i wyrażać swojego interfejsu API pod względem DOM API, LINQ do XML lub XmlReader
?
Dla każdego, kto jest zdezorientowany tym, jak działa ta ścieżka, wygląda na to, że wygląda to tak: 'Your.Project.Name.SubFolder.FileName.extension'. – crush