如何模拟存储库以用作控制器的参数
本文关键字:控制器 参数 存储 何模拟 模拟 | 更新日期: 2023-09-27 17:54:53
我正在使用实体框架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
传递给控制器