In einer Methode, die ich in der Regel so etwas tun würde:C# SystemWrapper Mock File.ReadAllLines
string[] lines = File.ReadAllLines(filename);
Um zu testen, würde Ich mag Lage sein, das Dateisystem zu verspotten, und ich habe positive Kommentare gehört über SystemWrapper, also möchte ich diese Bibliothek verwenden.
Wie ich verstehe, erfordert die Verwendung von SystemWrapper, dass ich Interface-basierte aufrufen. Das ist gut. Also meine obige Codezeile wird:
string[] lines = new FileWrap().ReadAllLines(filename);
Nun, mein Testmethode sieht wie folgt aus: (Ich verwende Microsoft.VisualStudio.TestTools.UnitTesting in Verbindung mit Rhino Mock)
[TestMethod()]
public void Test_this_method()
{
IFileWrap fileWrapRepository = MockRepository.GenerateMock<IFileWrap>();
fileWrapRepository.expect(x => x.ReadAllLines("abc.txt").Return(new string[] {"Line 1", "Line 2", "Line 3"});
MethodThatReadsLines();
}
Dieses Beispiel ist an ein Beispiel auf der Seite SystemWrapper Getting Started angepasst.
Wenn ich dies tue, ruft die Methode jedoch nicht meine verspottete Methode auf, sie ruft File.ReadAllLines
auf, was nicht das ist, was ich erwarte.
Was ist der richtige Weg, um File.ReadAllLines
zu verspotten?