Имитация операций ввода-вывода в 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 на момент написания статьи. Это строка, которая вызывает вашу ошибку.

Другие вопросы по тегам