2017-09-04 3 views
0

J'ai une méthode avec la signature suivante.Comment revenir de System.Threading.Tasks. <string> méthode dans UnitTesting

Task<string> Post(PartyVM model); 

Je vous écris une classe de test unitaire en utilisant une méthode suivante pour tester la méthode Post ci-dessus.

 mockPartyManager.Setup(mr => mr.Post(It.IsAny<PartyVM>())).Returns(
      (PartyVM target) => 
      { 
       if (target.PartyID.Equals(default(int))) 
       { 
        target.Name = "NewP"; 
        target.Status = "ACTIVE"; 
        target.PartyRoleID = msoList.Count() + 1; 
        partyList.Add(target); 
       } 
       else 
       { 
        var original = partyList.Where(q => q.PartyID == target.PartyID).Single(); 

        if (original == null) 
        { 
         return "Execution failed"; 
        } 

        original.Name = target.Name; 
        original.Status = target.Status; 
       } 

       return "Execution Successful"; 
      }); 
     this.MockMSOManager = mockPartyManager.Object; 
    } 

Je reçois des messages d'erreur lorsque j'essaie de renvoyer des chaînes.

Erreur 45 Impossible de convertir implicitement le type 'string' à 'System.Threading.Tasks.Task'

Comment puis-je résoudre ce problème.

Error

+0

double possible de [Utilisation Moq pour se moquer d'une méthode asynchrone pour un test unitaire] (https://stackoverflow.com/questions/20859639/using-moq-to-mock-an-asynchronous-method -pour-un-test-unité) – dymanoid

Répondre

2

Essayez d'utiliser la méthode Task.FromResult<TResult>. À partir de MSDN:

Crée une tâche qui s'est terminée avec succès avec le résultat spécifié .

return Task.FromResult("Execution failed");