如何模拟存储库以用作控制器的参数



我正在使用实体框架6构建c# MVC5项目的单元测试。我试图用Moq来模拟我的BlogRepository,然后将其用作我试图测试的BlogController的参数。实际上,我的单元测试工作得很好,但为了做到这一点,我创建了一个假的BlogRepository类,当我更愿意工作如何使用Moq。

我得到的问题是,控制器希望参数类型为IBlogRepository,但只将其视为Mock。所以我得到一个无效参数错误。我想这就是它应该被使用的方式。

下面是我创建mock的尝试:

Mock<IBlogRepository> blogRepo = new Mock<IBlogRepository>();
blogRepo.Setup(t => t.GetBlogByID(It.IsAny<int>())).Returns<Blog>(blog => new Blog());

这里是控制器的开头:

public class BlogController : Controller
{
    IBlogRepository blogRepo;
    public BlogController(IBlogRepository repoBlog)
    {
        blogRepo = repoBlog;
    }

我做错了什么?还是我想错了?任何帮助都会很感激。谢谢。

您应该将blogRepo.Object而不是blogRepo传递给控制器

相关内容

  • 没有找到相关文章

最新更新