Próbuję utworzyć testy jednostkowe dla niektórych starszych kodów. jednej z klas, które mam do przetestowania nazywa FileDownloader który ma tylko jeden sposób następujący:Prześmiewanie HTTPResponse w teście jednostkowym
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();
}
Nie wolno mi byłaby ten kod (który byłby idealny!).
Aby to sprawdzić postanowiłem stworzyć fałszywy HTTPContext na podstawie artykułu poniżej
Z tego jestem w stanie uzyskać fałszywe HTTPContext podczas mojego wykonania testu, jednak istnieją problemy z preparowania HttpResponse.
Oto jak wygląda mój testu:
[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);
}
olewam zwyczaj utworzony httpResponse obiektu do metody. Powoduje to zgłoszenie następującego wyjątku po wyświetleniu wiersza "response.BinaryWrite (content)":
System.Web.HttpException: OutputStream nie jest dostępny, gdy niestandardowy TextWriter jest używany.
Nie jestem pewien, co dokładnie powinienem tu potwierdzać, dlatego nie ma żadnych zapewnień w teście. Czy to jest właściwy sposób na przetestowanie tej metody ... jakichkolwiek pomysłów. proszę doradź ?
Dzięki
Dzięki .. Spojrzałem na HttpSimulator .. ale nadal nie mogę śledzić, jak stworzyć fałszywą HttpResponse ... czy mógłbyś trochę rozwinąć? – Sennin