2009-10-09 5 views
1

J'ai un framework tiers que j'utilise pour écrire un document Excel et le télécharger.Comment tester un framework tiers quand j'ai besoin de passer une HttpResponse?

Le problème est que l'utilisateur tente d'exporter un grand nombre d'enregistrements et qu'il lève une exception OutOfMemoryException.

J'essaie d'écrire un test pour vérifier que cela se produit dans l'infrastructure tierce partie et non dans mon code, mais la méthode Save prend un objet HttpResponse comme l'une des méthodes.

Comment puis-je obtenir/simuler/quel que soit l'objet HttpResponse transmis?

Exemple d'utilisation:

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

Il est évident que le HttpContext.Current.Reponse ne fonctionne pas dans un test unitaire, donc mon problème.

+0

Quel langage de programmation? –

+0

C'est dans ASP.NET, mais je l'écris en C#, je vais ajouter un tag. – Joseph

Répondre

1

[Disclaimer: Je travaille à Typemock]

Vous n'avez pas besoin d'avoir un objet HttpResponse réel au lieu d'utiliser Isolator pour créer un exemple faux de type HttpResponse et le retourner quand HttpContext .Current.Response est appelé:

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

Vous pouvez définir les propriétés de l'objet faux et changer son comportement u chante Isolate.WhenAppel.

Le mérite de cette approche est que vous n'avez pas besoin de définir un environnement compliqué, en fait vous pouvez utiliser ce code dans un test unitaire simple.

2

Le HttpRequestBase de .Net 3.5 SP1 est conçu à cet effet, mais il ne vous fera rien tant que le code tiers ne l'utilise pas. (il s'agit d'un remplacement direct donc pas difficile à utiliser)

Si l'autre code ne l'utilise pas, vous pouvez essayer d'héberger le code dans Cassini et de le demander via HTTP.