0

Je souhaite créer une instance de classe A qui hérite de la classe StatelessService dans mon test unitaire. Mais je ne peux pas. J'ai tout essayé: en se moquant des dépendances, en implémentant mes propres contextes et etc.Comment tester un service sans état dans le fabric de service

Lorsque j'essaie de créer une instance, StatelessService renvoie NullReferenceException quelque part à l'intérieur.

Cela peut-il être fait?

class A : StatelessService 
{ 
    public A(StatelessServiceContext context) : base(context /* Here will be thrown NullReferenceException */) 
    { 
     // It will never even get there. 
    } 
} 

class UnitTest 
{ 
    public void TestMethod() 
    { 
     var activationContext = MOCK<ICodePackageActivationContext>(); 
     var context = new StatelessServiceContext(..., activationContext, ...); 
     var a = new A(context); // Here will be thrown an exception. 
    } 
} 
+0

Fournissez du code en [mcve] qui illustre mieux votre problème. Il peut être utilisé pour aider à identifier le problème et dériver des solutions possibles. – Nkosi

+0

@Nkosi J'ai mis à jour la question en fournissant un pseudo-code minimal. – EwanCoder

+0

Vous devrez également être plus descriptif quant à quand et où vous obtenez l'erreur. Jetez un oeil à l'exemple ici et voyez si vous pouvez trouver un exemple qui aide https://github.com/Azure-Samples/service-fabric-watchdog-service/blob/90c6418a99b5fcd777a5b7c2a5f6443fdcc9f42a/TestStatelessService/TestStatelessService.cs – Nkosi

Répondre

1

Cela peut être fait. Mais au lieu de réinventer la roue, jetez un coup d'œil aux simulacres de tissu de service https://github.com/loekd/ServiceFabric.Mocks

Il contient des aides utiles pour exactement votre type de scénario.

+0

J'ai essayé de l'utiliser, cela ne fonctionne pas et jette toutes sortes d'exceptions sur différentes versions de la structure de service. Quoi qu'il en soit, j'ai résolu mon problème. C'était avec un initialiseur de type et certaines propriétés statiques n'étant pas définies dans * my * class. Cela n'a rien à voir avec le tissu de service. – EwanCoder

+1

@EwanCoder, s'il vous plaît envisager d'afficher des commentaires/problèmes à l'emballage, afin que tout le monde peut bénéficier. https://github.com/loekd/ServiceFabric.Mocks/issues – LoekD