gpt4 book ai didi

c# - Moq Returns 方法返回 null

转载 作者:行者123 更新时间:2023-11-30 23:31:28 27 4
gpt4 key购买 nike

我是 Moq 的新手,正在尝试让我的模拟在 ASP.NET MVC 中返回一个值。文档 here .代码:

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;

详细信息方法调用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);
}

这是详细信息方法。在 Debug模式下,一旦我跨过调用的 GetById 方法,我就会看到获取的 Story 为空。

最佳答案

它发生是因为 Returns 是结果而不是断言更改为:

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

关于c# - Moq Returns 方法返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34569130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com