À l'aide de httpcontext dans l'unité de test
Je suis à l'aide de C#4.0 et j'ai besoin de test de l'unité de service. La fonction dans le service retourne un chemin similaire à la variable, j'ai appelé attendre, c'est le chemin que je m'attends à revenir. Mais lorsque j'exécute ce test, j'obtiens le message d'erreur que HttpContext.Le courant est NUL. Que puis-je faire pour résoudre ce problème, de sorte que le test peut être exécuté?
[TestMethod]
public void GetPathTest()
{
var expected = System.IO.Path.GetFullPath(HttpContext.Current.Server.MapPath("~/Certificates/"));
var path = _mockService.Setup(o => o.GetPath()).Returns(expected);
}
OriginalL'auteur Rob | 2010-07-13
Vous devez vous connecter pour publier un commentaire.
Pour le moment je ne peux pas trouver mon wrapper pour HttpContext que j'ai utilisé précédemment, mais pour le moment, il suffit de créer un contexte pour une vides de demande et à partir de là, comme ceci:
Puis dans l'unité de test initialiser ou dans l'unité de test lui-même (avant de créer prévu) vous pouvez configurer la HttpContext comme suit:
Alors simplement de la chair au faux contexte et de possibles faux sessionstate, etc en tant que de besoin.
(Edit: C'est tout dans VS2008, framework 3.5).
OriginalL'auteur Anton
Vous pouvez essayer de regarder les attributs créés pour ASP.Net les tests unitaires, comme
Ce lien vers MSDN a une assez bonne écriture-up à ce sujet
OriginalL'auteur Darksider
Vous pouvez décorer votre méthode de test avec les attributs suivants:
À l'ajout d'une valeur par Défaut.fichier aspx dans votre unité de test proj.
À l'intérieur de la méthode d'essai, vous pouvez facilement accéder à la HttpContext.
Si vous souhaitez déboguer, vous pouvez utiliser quelques traces ou interrompre le débogage de l'exécution des instructions du Système.Diagnostics.Débogueur.Pause()
et puis attacher le débogueur au processus, comme expliqué par MSDN:
https://msdn.microsoft.com/en-us/library/vstudio/c6wf8e4z(v=vs. 100).aspx
OriginalL'auteur Massimo Della Calce
Je poste cette référence. Ce n'est pas une solution facile, et parle de Duck-Typing (si il charlatans..):
Il est pertinent et intéressant à lire; car il n'y a pas de IHttpContext il n'est pas possible de créer un environnement de test de la mise en œuvre - jusqu'à ce que vous envisagez d'utiliser le Duck-Typing bibliothèque ici. Si ce n'est pas une réponse directe.
Espère que ça aide.
OriginalL'auteur Kieren Johnstone