2017-09-04 11 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; 
    } 

문자열을 반환하려고하면 오류 메시지가 표시됩니다. 암시 적으로 형식 '문자열을'변환 할 수 없습니다

오류 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");