Я пытаюсь создать модульные тесты для некоторого устаревшего кода.Один из классов, который я должен протестировать, называется FileDownloader, который имеет только один следующий метод:
public void Transmit(string fileName, HttpResponse response, DownloadFileType fileType, byte[] content)
{
response.Clear();
response.ClearHeaders();
response.ContentType = "application/xls";
response.AddHeader("content-disposition", "attachment; filename=" + HttpContext.Current.Server.UrlEncode(fileName));
response.BinaryWrite(content);
response.End();
response.Flush();
}
Мне не разрешено рефакторинг этого кода (что было бы идеально!).
Чтобы проверить это, я решил создать поддельный HttpContext на основе статьи ниже
Щелкните по этому
С этим я могу получить поддельный HttpContext во времявыполнение моего теста, однако есть проблемы с подделкой HttpResponse.
Вот как выглядит мой тест:
[SetUp]
public void SetUp()
{
mocks = new MockRepository();
FakeHttpContext.CreateFakeHttpContext();
}
[Test]
public void ShouldTransmitHttpResponseInTheSpecifiedFormat()
{
FileDownloader downloader = new FileDownloader();
string path = "..\\..\\Fakes\\DummyDownloadReportsTemplate.xls";
byte[] bytes = ReadByteArrayFromFile(path);
downloader.Transmit("test.xls", new HttpResponse(new StringWriter()), DownloadFileType.Excel, bytes);
}
Я передаю в метод созданный пользователем объект HTTPResponse.Это вызывает следующее исключение при попадании в строку «response.BinaryWrite (content)»:
System.Web.HttpException: OutputStream недоступен, когда используется пользовательский TextWriter.
I 'я не уверен, что именно я должен утверждать здесь .. следовательно, нет никаких утверждений в тесте.Это правильный способ проверить этот метод ... любые идеи.посоветуйте пожалуйста?
спасибо