У меня есть следующий метод.Операции Mocking IO в 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?
Есть ли способ решить эту проблему?
Возможный дубликат [Как вы издеваетесь над файловой системой в C# для модульного тестирования?] (Http://stackoverflow.com/questions/1087351/how-do-you-mock-out-the-file-system -in-c-sharp-for-unit-testing) –
, но они не упомянули, как достичь этого, используя Typemock – user2435880
Можете ли вы поделиться кодом для всего модульного теста? –