0
我剛剛在Just Mock,面臨傳遞此方法的問題,需要幫助來理解問題。只是模擬,嘲笑不按預期工作
我有一個下面,我想測試
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);
}
和下面的代碼,我已經測試編寫的代碼
[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);
}
在這裏我期待opstatus.Status是真實的,但得到每次都是假,導致它進入
if (!opStatus.Status)
throw new System.Web.Http.HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError));
TIA