2013-10-15 2 views
0

Je suis très nouveau sur nUnit, les tests en général, et c'est ma première méthode de test. J'aimerais avoir TDD, mais il est trop tard et je dois implémenter des tests unitaires sur du code existant.Tests NUnit sur WCF

Je reçois cette erreur: HttpContext n'est pas disponible. Cette classe peut uniquement être utilisée dans le contexte d'une requête ASP.NET.

Toutes les autres méthodes qui ne référencent pas le service réussissent l'essai. Comment je le répare?

namespace MyWCFServiceTests 
{ 
    [TestFixture] 
    public class Class1 
    { 
     [Test] 
     public void myMethod() 
     { 
      MyWCFService.Service1 wcf = new MyWCFService.Service1(); 
      wcf.MyMethod(); 
     } 
    } 
} 
+0

Comme mention dans les réponses ci-dessous, vous devez simuler l'instance de service. Et dans votre test, vous devriez vous concentrer sur la logique interne (pour le client et le service (généralement deux solutions différentes avec des projets de test différents)). J'irais pour Moq si vous êtes nouveau aux tests unitaires. – Jocke

Répondre

1

Vous devriez envisager d'utiliser l'un des cadres Mocking là-bas (QMC, Typemock etc.) Voici un article qui explique les concepts de base de mocking WCF services with Moq

0

Ressemble votre service d'hébergement nécessite ASP.NET . Si tel est le cas, cela dépend de HttpContext et vous ne pourrez pas vous en moquer. Il convient de mentionner qu'il ne s'agit pas de tests unitaires, mais plutôt d'une fonctionnalité/intégration car vous testez l'ensemble du pipeline WCF (sérialisation, pile réseau, environnement d'hébergement, probablement couche de stockage, etc.). Vous avez les options suivantes cependant:

  • hôte le service sur IIS (comme vous le faites probablement en production) et vous faire des tests que les clients réguliers WCF

  • Essayez de convertir le service afin qu'il puisse être 'autonome si possible

  • mise en œuvre de services Refactoriser afin que vous puissiez (UNIT-) tester la logique sans WCF (vous finirez avec beaucoup de dépendances, mais qui est une bonne chose)