Имитация операций ввода-вывода в Nunit с использованием Typemock
У меня есть следующий метод.
public string CreateFile(string path, string fileName)
{
string fullPath = path + "ExportedFiles\\";
if (Directory.Exists(fullPath))
{
DirectoryInfo dir = new DirectoryInfo(fullPath);
foreach (FileInfo fi in dir.GetFiles())
{
fi.Delete();
}
}
else
{
Directory.CreateDirectory(fullPath);
}
string filePath = fullPath + fileName;
return filePath;
}
Я попытался использовать следующее в моем тестовом примере.
[Test, Isolated]
public void TestCreateFileIfPathExists()
{
Isolate.WhenCalled(() => System.IO.Directory.Exists("gsgs")).WillReturn(true);
Isolate.WhenCalled(() => testMyClass.CreateFile(@"D:\testFolder\","TestFile")).CallOriginal();
string result = testMyClass.CreateFile(@"D:\testFolder\", "TestFile");
Assert.AreEqual("D:\\testFolder\\ExportedFiles\\TestFile", result);
}
Это бросает следующее исключение typemock.
TypeMock.TypeMockException: * В блоке записи не найдено вызовов методов. Пожалуйста, проверьте: * Вы пытаетесь подделать поле вместо свойства? * Вы пытаетесь подделать неподдерживаемый тип mscorlib?
Есть ли способ решить это?
1 ответ
Если вы посмотрите на последний вопрос об исключении, которое вы получаете,
* Вы пытаетесь подделать неподдерживаемый тип mscorlib?
после этого в исключении есть веб-адрес, который гласит:
Смотрите поддерживаемые типы здесь: http://www.typemock.com/mscorlib-types
Когда вы пойдете туда, вы заметите:
В этом списке отсутствует System.IO.Directory
Класс, который, по-видимому, не поддерживается TypeMock на момент написания статьи. Это строка, которая вызывает вашу ошибку.