[英]Just Mock, Mocking not working as expected
I am new at Just Mock, facing a problem to pass this method, need help to understand the issue. 我是Just Mock的新手,在通过此方法时遇到问题,需要帮助来了解问题。
I have a following code that I want to test 我有以下代码要测试
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);
}
and following code that I have written for testing 以及我为测试而编写的代码
[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);
}
over here I am expecting opstatus.Status to be true but getting false everytime, which results it to go in 在这里,我期望opstatus.Status为true,但每次都会为false,这会使它进入
if (!opStatus.Status)
throw new System.Web.Http.HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
TIA TIA
Done. 做完了 just in case if somebody looking for answers.
以防万一有人在寻找答案。
I forgot to Mock Mapper. 我忘了模拟嘲笑者。
Below is the code that I have used to solve this issue. 下面是我用来解决此问题的代码。
[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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.