2014-07-18 4 views
1

Moq 프레임 워크를 사용하여 프로젝트에서 객체를 조롱했습니다. AspNet.Identity의 UserManager.SetPhoneNUmberAsync를 호출하는 사용자 프로필을 저장하려고합니다. UserManager.SetPhoneNumberAsync에MVC 5의 SetPhoneNumberAsync를 조롱

public async Task<ActionResult> SaveProfile(DistributorViewModel distributorModel) 
    { 
     if (ModelState.IsValid) 
     { 
      string currentUserId = User.Identity.GetUserId(); 
      distributorModel.UserDetailViewModel.ModifiedDate = System.DateTime.Now; 
      distributorModel.UserDetailViewModel.ModifiedBy =Guid.Parse(currentUserId); 
      var isUpdated = this.distributorService.Update(distributorModel.UserDetailViewModel); 

      IdentityResult result = await UserManager.SetPhoneNumberAsync(currentUserId, distributorModel.UserDetailViewModel.MobileNo); 

      if (result.Succeeded && isUpdated) 
      { 
       Flash.Success(Messages.ProfileUpdatedSuccessfully); 
      } 
      else 
      { 
       Flash.Error(Messages.ProfileUpdationError); 
      } 
     } 
     return RedirectToAction("Index", distributorModel); 
    } 

그것 던지는 오류 : 다음은 내 코드입니다. 이 방법을 모의 어떻게 할 수 있습니까? 이와 유사한

답변

1

뭔가 작동합니다 : 당신은 또한 IdentityResult로부터 상속 된 클래스 IdentityResultMock를 만들 수 있습니다

 var manager = new Mock<UserManager<ApplicationUser>(); 
     manager.Setup(m => m.SetPhoneNumberAsync(userId, "phoneNumber").ReturnsAsync(IdentityResult.Succeeded()).Verifiable(); 
+0

답장을 보내 주셔서 감사합니다. 그것은 나를 위해 일했습니다 : userManager.Setup (m => m.SetPhoneNumberAsync (It.IsAny (), "").) ReturnAsync (IdentityResult.Success) .Verifiable(); – Rashi

0

. 할당 할 수있는 것보다 속성이 IdentityResultMock이므로 IdentityResult에 보호 된 생성자가 있기 때문입니다.

내 대답 here을 참조하십시오.