В методе я обычно делать что-то вроде этого:C# SystemWrapper макет File.ReadAllLines
string[] lines = File.ReadAllLines(filename);
Чтобы проверить, я хотел бы иметь возможность издеваться из файловой системы, и я слышал положительные отзывы около SystemWrapper, поэтому я хотел бы использовать эту библиотеку.
Как я понимаю, использование SystemWrapper требует, чтобы я выполнял вызов на основе интерфейса. Хорошо. Так что мой выше строка кода будет:
string[] lines = new FileWrap().ReadAllLines(filename);
Теперь, мой тестовый метод выглядит следующим образом: (я использую Microsoft.VisualStudio.TestTools.UnitTesting в сочетании с 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();
}
Этот пример приведена в примере на странице SystemWrapper Начало работы.
Однако, когда я это делаю, метод не вызывает мой издеваемый метод, он вызывает File.ReadAllLines
, чего я не ожидаю.
Каков правильный способ издеваться File.ReadAllLines
?