Ich habe zwei Ideen ... eine, um die HttpResponse zu verspotten, und die andere ist, einen Webserver zu simulieren.
1. Mocking Httpresponse
schrieb ich, bevor ich wusste, was Mockframework Sie verwendet haben. So können Sie Ihre Methode mit TypeMock testen.
Dies setzt voraus, dass Sie Ihre httpresponse Variable an die Methode übergeben, wobei das Verfahren wie folgt zu ändern:
public void ShowPDF(Stream stream, HttpResponse httpResponse)
Natürlich können Sie diese es stattdessen auf eine Eigenschaft auf Ihrer Seite Objekt vorbei würde sich ändern, wenn es sich um ein Mitglied Ihrer Page-Klasse.
Und hier ist ein Beispiel dafür, wie man testen könnte eine gefälschte Httpresponse mit:
internal void TestPDF()
{
FileStream fileStream = new FileStream("C:\\deleteme\\The Mischievous Nerd's Guide to World Domination.pdf", FileMode.Open);
MemoryStream memoryStream = new MemoryStream();
try
{
memoryStream.SetLength(fileStream.Length);
fileStream.Read(memoryStream.GetBuffer(), 0, (int)fileStream.Length);
memoryStream.Flush();
fileStream.Close();
byte[] buffer = null;
var fakeHttpResponse = Isolate.Fake.Instance<HttpResponse>(Members.ReturnRecursiveFakes);
Isolate.WhenCalled(() => fakeHttpResponse.BinaryWrite(null)).DoInstead((context) => { buffer = (byte[])context.Parameters[0]; });
ShowPDF(memoryStream, fakeHttpResponse);
if (buffer == null)
throw new Exception("It didn't write!");
}
finally
{
memoryStream.Close();
}
}
2. Simulieren Sie einen Web-Server
Vielleicht können Sie dies tun, indem einen Webserver simuliert. Es mag verrückt klingen, aber es sieht nicht so aus, als wäre es so viel Code. Im Folgenden finden Sie einige Links zum Ausführen von Web Forms außerhalb von IIS.
Can I run a ASPX and grep the result without making HTTP request?
http://msdn.microsoft.com/en-us/magazine/cc163879.aspx
Mock ein Httpresponsebase. – SLaks
ist httpResponse außerhalb dieser Methode deklariert? –
@betogrun: Welches spöttische Framework verwenden Sie zum Testen? –