2017-09-04 6 views
0

次のシグネチャを持つメソッドがあります。System.Threading.Tasksから戻る方法。 UnitTestingの<string>メソッド

Task<string> Post(PartyVM model); 

私は上記のPostメソッドをテストするには、次の方法を使用してユニットテストクラスを書いています。

 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; 
    } 

文字列を返すときにエラーメッセージが表示されます。暗黙的に型 'string' を変換できません

エラー45 'System.Threading.Tasks.Task' 私はこの問題を解決するにはどうすればよい

Error

+0

[単体テストの非同期メソッドを模擬するために部品番号を使用した(https://stackoverflow.com/questions/20859639/using-moq-to-mock-an-asynchronous-methodの可能な重複-for-a-unit-test) – dymanoid

答えて

2

Task.FromResult<TResult>方法を使用してみてください。 MSDNより:

指定された結果 で正常に完了したタスクを作成します。

return Task.FromResult("Execution failed"); 
関連する問題