Frage

Ich habe einen Dritten Rahmen, dass ich mit einem Excel-Dokument zu schreiben, und haben die Benutzer herunterladen es.

Das Problem ist, dass der Benutzer versucht, eine große Anzahl von Datensätzen zu exportieren, und es wirft ein OutOfMemoryException.

Ich versuche, einen Test zu schreiben, um zu überprüfen, dass dies in dem Dritten Rahmen geschieht und nicht in meinem Code, aber die Save-Methode nimmt ein Httpresponse-Objekt als eine der Methoden.

Wie kann ich / Mock / was auch immer ein Httpresponse-Objekt zu übergeben?

Beispiel für die Verwendung:

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

Offensichtlich ist die HttpContext.Current.Reponse nicht funktioniert in einem Gerät zu testen, damit mein Problem.

War es hilfreich?

Lösung

[Disclaimer: Ich arbeite bei Typemock]

Sie haben nicht ein tatsächliches Httpresponse-Objekt verwenden Sie stattdessen Trenner erstellen fälschen haben müssen Beispiel: vom Typ Httpresponse und es zurück, wenn HttpContext.Current.Response genannt wird:

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

Sie können die Eigenschaften auf dem falschen Objekt festgelegt und es das Verhalten mit Isolate.WhenCalled ändern.

Der Vorzug dieses Ansatzes besteht darin, dass Sie keine komplizierte Umgebung, in der Tat setzen müssen Sie diesen Code in einem einfachen Unit-Test verwenden können.

Andere Tipps

Die Httprequestbase von .Net 3.5 SP1 wird für diesen Zweck entwickelt, aber es wird dir nicht gut tun, wenn der Code von Drittanbietern verwendet es. (Es ist eine Drop-in-Ersatz, so dass es nicht schwer zu bedienen ist)

Wenn der andere Code ist es nicht verwenden, können Sie versuchen, den Code-Hosting in Cassini und es über HTTP anfordert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top