Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    N'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

Accéder à HttpContext.Current dans un test unitaire – configuration des types d’hôte dans un projet de test

Lorsque l’on fait des tests unitaires avec Visual Studio (Test edition ou Team Suite), il arrive que l’on ai besoin d’avoir accès à HttpContext.Current, par défaut cet objet est null.

[TestMethod] public void TestMethod1() { // Test fail by default Assert.IsNotNull(HttpContext.Current); }

La propriété Current de l’objet HttpContext est en lecture/écriture, par conséquent nous pouvons assigner une valeur à HttpContext.Current. Cependant, créer un HttpContext ne nous donne pas accès à toutes les fonctionnalités du contexte, par exemple la session. En effet l’objet Session est créé via un HttpModule (SessionStateModule). Assigner manuellement HttpContext.Current ne permet pas faire transiter ce contexte à travers les HttpModules, cela devient vite problématique.

[TestMethod] public void TestMethod1() { // don't use ! SimpleWorkerRequest workerRequest = new SimpleWorkerRequest( "/", @"c:/inetpub/wwwroot/", "/default.aspx", null, Console.Out); HttpContext context = new HttpContext(workerRequest); Assert.IsNotNull(HttpContext.Current); }

Cette problématique a été prévue dans Visual Studio. En effet, il est possible de personnaliser l’application hôte, c’est à dire l’application exécutant les tests.

Lorsque l’on ajoute un projet de test dans une solution Visual Studio, en plus du projet de test, un fichier “LocalTestRun.testrunconfig” est ajouté. Ce fichier permet de configurer la façon dont sont exécutés le ou les projets de test de la solution. Si l’on double click sur ce fichier, un éditeur nous affiche les différentes options, parmi celles-ci, nous avons la possibilité de choisir le type de l’hôte (Host Type).

image

Lorsque l’application hôte exécute un test, un HttpModule provenant de l’hôte “ASP.NET” est rajouté à un site web, ce module s’abonne à l’événement Load de la page, cet événement va ensuite appeler le code du test unitaire. Chaque test unitaire sera exécuté dans l’évenement Load de la page configurée en URL.

image 

Le site web et la page appelé par le test unitaire sont configurés dans le fichier LocalTestRun.testrunconfig vu plus haut, cette page ne nécessite rien de particulier, elle est utilisé seulement pour son événement Load.

Le principal avantage de cette solution est de tester du code avec un vrai contexte web, tout se passe comme si nous exécutons le code du test unitaire dans l’événement load de la page appelé.

A noter que l’on peut également configurer ces paramètres pour un test seul et non tous les tes de la solution, pour cela nous devons utiliser les attributs HostType ainsi que UrlToTest, je n’ai pas creusé cette possibilité.

Personnellement, j’utilise cette fonctionnalité afin de tester un site Commerce Server, CommerceContext.Current se reposant sur HttpContext.Current. Il me suffit donc de configurer un site de test vide utilisant Commerce Server au niveau de IIS, puis de spécifier l’url d’une page vide de ce site de test.

Pour résumer :

On peut éditer le fichier LocalTestRun.testrunconfig pour modifier l’hôte d’exécution des tests. L’hôte “ASP.NET” permet de tester notre code en étant dans un vrai contexte web. L’URL nécessaire à cette hôte est nécessaire seulement pour exécuté le test à partir de l’événement Load de la page.

Avez vous d’autres astuces pour tester des applications web ?

Pour en savoir plus : How To : Create an ASP.NET Unit Test

Posted: dimanche 8 février 2009 20:51 par cyril
Classé sous : , , ,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01