Bazı eski kodlar için birim testleri oluşturmaya çalışıyorum. Sadece izleyen bir yöntem olan FileDownloader denir test etmek zorunda sınıfların biri:Bir birim testinde HTTPResponse alay Etme
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();
}
Bu kodu refactor izin yok (ideal olurdu!). Bunu test etmek için
Ben benim test yürütme sırasında sahte HttpContext elde edebilmek olduğum Bununla
Aşağıdaki makalede dayalı sahte HttpContext oluşturmaya karar, ancak taklit ile sorunları vardır HttpResponse.
İşte benim test benziyor açıklanmıştır:
[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);
}
Ben yönteme oluşturulan özel bir HTTPResponse nesne geçiyordum. Bu, "response.BinaryWrite (content)" satırı:
System.Web.HttpException: Özel bir TextWriter kullanıldığında OutputStream kullanılamaz. Burada tam olarak neyin doğru olduğunu bilmem gerektiğinden emin değilim .. bu nedenle testte hiç bir iddia yoktur. Bu yöntemi test etmenin doğru yolu budur ... herhangi bir fikir. tavsiye lütfen ?
Teşekkür
Projemde
Teşekkürler .. HttpSimulator'a bir göz attım .. ama hala sahte bir HttpResponse oluşturmayı takip edemiyorum ... biraz detaylandırır mısınız lütfen. – Sennin