Ho due idee ... una per deridere HttpResponse e l'altra per simulare un server web.
1. beffardo HttpResponse
ho scritto questo prima di sapere che beffardo quadro è stato utilizzato. Ecco come puoi testare il tuo metodo usando TypeMock.
questo presuppone che si passa la variabile HttpResponse al metodo, cambiando il metodo come segue:
public void ShowPDF(Stream stream, HttpResponse httpResponse)
Naturalmente si cambierebbe questo per passarlo a una proprietà sul vostro oggetto pagina, invece, se si tratta di un membro della tua classe Page.
Ed ecco un esempio di come si potrebbe provare con un HttpResponse falso:
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. simulare un server Web
forse si può fare questo simulando un server web. Potrebbe sembrare folle, ma non sembra che sia così tanto codice. Qui ci sono un paio di link su come eseguire Web Form al di fuori di IIS.
Can I run a ASPX and grep the result without making HTTP request?
http://msdn.microsoft.com/en-us/magazine/cc163879.aspx
fonte
2012-12-18 16:15:31
Mock un HttpResponseBase. – SLaks
è httpResponse dichiarato al di fuori di questo metodo? –
@betogrun: quale framework di derisione utilizzi per i test? –