Я сейчас исправляю дефект, исходный код, как показано ниже:
public void Run()
{
var tempOutputDir = new DirectoryInfo("d:\Test\");
GenerateFiles(tempOutputDir);
var result = RunToStreamCore(tempOutputDir);
}
void GenerateFiles()
{
// Run complex logic to generate files
}
public MemoryStream RunToStreamCore(DirectoryInfo outputDir)
{
return new MemoryStream(File.ReadAllBytes(outputDir.GetFiles()[0].FullName));
}
Я предполагаю, что основная причина этого дефекта может быть вызвана тем, что созданный файл был удален сторонней программой, затемoutputDir.GetFiles () [0] выбросить исключительную нулевую ссылку.
Я собираюсь реорганизовать метод RunToStreamCore следующим образом:
public MemoryStream RunToStreamCore(DirectoryInfo outputDir)
{
var files = outputDir.GetFiles();
if (files.Length > 0)
{
return new MemoryStream(File.ReadAllBytes(files.First().FullName));
}
else
{
throw new FileNotFoundException("The file can not be found.");
}
}
Вопрос заключается в том, как записать для этого модульный тест.сценарий?Как смоделировать поведение удаляемого файла перед тем, как получить файл?