2016-01-02 9 views
2

Я новичок в Moq и пытаюсь получить мой макет, чтобы вернуть значение в ASP.NET MVC. Документы 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 метод возвращает нуль.

Что я делаю неправильно?

 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); 
     } 

Это метод детали. В режиме отладки я вижу, что извлеченная история имеет значение null, как только я перехожу к методу GetById.

ответ

1

это ocurred потому Returns был результатом не изменения, утверждают в:

mock.Setup(x => x.GetById(10))) 
    .Returns(new Story {Id=10 }); 
+0

Ох, конечно, извините за недоразумение. Благодаря! – KSHMR

+0

@Johnath Пожалуйста, отметьте правильный ответ. –

+0

Сделаю, как только смогу, он говорит, что могу отметить через 5 минут – KSHMR

Смежные вопросы