Come faccio a testare un quadro terza parte, quando ho bisogno di passare in un HttpResponse

StackOverflow https://stackoverflow.com/questions/1544647

Domanda

Ho un framework di terze parti che sto usando per scrivere un documento di Excel e che l'utente scaricarlo.

Il problema è che l'utente sta tentando di esportare un numero elevato di record, ed è lanciando un OutOfMemoryException.

Sto cercando di scrivere un test per verificare che questo sta accadendo nel quadro di terze parti e non nel mio codice, ma il metodo Save prende un oggetto HttpResponse come uno dei metodi.

Come posso ottenere / finto / qualunque cosa un oggetto HttpResponse di passare?

uso Esempio:

excel.Save("test.xls", 
    OpenType.OpenInExcel, 
    FileType.Excel2003,
    HttpContext.Current.Response);

Ovviamente il HttpContext.Current.Reponse non funziona in una prova di unità, da qui il mio problema.

È stato utile?

Soluzione

[Disclaimer: io lavoro a Typemock]

Non è necessario disporre di un oggetto reale HttpResponse invece utilizzare Isolator per creare un falso esempio di tipo HttpResponse e restituirla quando viene chiamato HttpContext.Current.Response :

var fake = Isolate.Fake.Instance<HttpResponse>();
Isolate.WhenCalled(() => HttpContext.Current.Response).WillReturn(fake);

È possibile impostare le proprietà sull'oggetto falso e modificare il suo comportamento con Isolate.WhenCalled .

Il merito di questo approccio è che non è necessario impostare un ambiente complicato, in realtà è possibile utilizzare questo codice all'interno di un semplice test di unità.

Altri suggerimenti

Il HttpRequestBase da .Net 3.5 SP1 è stato progettato per questo scopo, ma non farà nulla di buono a meno che il codice di terze parti utilizza. (Si tratta di una sostituzione drop-in, quindi non è difficile da usare)

Se l'altro codice non lo usa, si può provare che ospita il codice Cassini e che ne facciano richiesta su HTTP.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top