2017-10-15 2 views
0

Je suis nouveau à Just Mock, face à un problème pour passer cette méthode, besoin d'aide pour comprendre le problème.Just Mock, Mocking ne fonctionne pas comme prévu

J'ai un code suivant que je veux tester

public ActionResult Create(JournalViewModel journal) 
    { 
     if (ModelState.IsValid) 
     { 
      var newJournal = _mapper.Map<JournalViewModel, Journal>(journal);// Mapper Updates cause syntax change 

      newJournal.UserId = (int)_membershipService.GetUser().ProviderUserKey; 

      var opStatus = _journalService.AddJournal(newJournal); 
      if (!opStatus.Status) 
       throw new System.Web.Http.HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)); 

      return RedirectToAction("Index"); 
     } 
     else 
      return View(journal); 
    } 

et code suivant que je l'ai écrit pour tester

[TestMethod()] 
    public void Create_return_journal() 
    { 

     var userMock = Mock.Create<MembershipUser>(); 
     Mock.Arrange(() => userMock.ProviderUserKey).Returns(1); 
     Mock.Arrange(() => membershipService.GetUser()).Returns(userMock); 

     var opStatusMock = Mock.Create<OperationStatus>(); 
     opStatusMock.Status = true; 
     Mock.Arrange(() => journalService.AddJournal(Mock.Create<Journal>())).Returns(opStatusMock); 


     //Act 
     PublisherController controller = new PublisherController(journalService, membershipService, mapper); 
     ViewResult actionResult = (ViewResult)controller.Create(Mock.Create<JournalViewModel>()); 
     var model = actionResult.Model as JournalViewModel; 

     //Assert 
     Assert.IsNotNull(model); 

    } 

ici je me attends opstatus.Status être vrai, mais obtenir faux à chaque fois, qu'il résulte d'aller dans

if (!opStatus.Status) 
       throw new System.Web.Http.HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)); 

TIA

Répondre

0

Terminé. juste au cas où quelqu'un chercherait des réponses.

J'ai oublié de Mock Mapper.

Voici le code que j'ai utilisé pour résoudre ce problème.

[TestMethod()] 
    public void Create_return_journal() 
    { 
     var journalNew = Mock.Create<JournalViewModel>(); 
     var journal = Mock.Create<Journal>(); 
     Mock.Arrange(() => mapper.Map<JournalViewModel, Journal>(journalNew)).Returns(journal); 

     var userMock = Mock.Create<MembershipUser>(); 
     Mock.Arrange(() => userMock.ProviderUserKey).Returns(1); 
     Mock.Arrange(() => membershipService.GetUser()).Returns(userMock); 

     var opStatusMock = Mock.Create<OperationStatus>(); 
     opStatusMock.Status = true; 

     Mock.Arrange(() => journalService.AddJournal(journal)).Returns(opStatusMock); 

     //Act 
     PublisherController controller = new PublisherController(journalService, membershipService, mapper); 
     RedirectToRouteResult actionResult = (RedirectToRouteResult)controller.Create(journalNew); 


     //Assert 
     Assert.IsNotNull(actionResult); 

    }