2
我是Moq的新手,試圖讓我的模擬在ASP.NET MVC中返回一個值。 Doc here。代碼:Moq返回方法返回null
mock = new Mock<IRepository<Story>>();
mock.Setup(x => x.GetById(It.Is<int>(i => i==10)))
.Returns(It.Is<Story>((Story story) => story.Id == 10 && story.Hits == 0));
storiesController = new StoriesController(mock.Object);
ViewResult result = storiesController.Details(10) as ViewResult;
和Details
方法調用storyRepository.GetById(id)
和測試失敗:Assert.IsNotNull(result);
因爲GetById
方法返回null。
我在做什麼錯?
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Story story = storyRepository.GetById(id);
if (story == null)
{
return HttpNotFound();
}
story.Hits++; // TODO!
storyRepository.Update(story);
storyRepository.Save();
return View(story);
}
這是Details方法。在調試模式下,當我跨過被調用的GetById方法時,我看到提取的Story是空的。
哦,對不起,誤會。謝謝! – KSHMR
@Johnath請標記爲正確答案。 –
我會盡快做,它說我可以在5分鐘內標記 – KSHMR