我正在使用Entity Framework 6为C#MVC5项目构建单元测试。我正在尝试使用Moq模拟我的BlogRepository,然后将其用作我试图测试的BlogController的参数。实际上我的单元测试工作正常,但为了做到这一点,我创建了一个Fake BlogRepository类,当我更愿意使用Moq来解决它时。
我得到的问题是Controller希望参数是IBlogRepository类型,但只是将其视为模拟。所以我得到一个无效的参数错误。我认为这就是它的用法。
以下是我创建模拟的尝试:
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;
}
我做错了什么?或者我在这里得到了错误的想法。任何帮助,将不胜感激。感谢。
答案 0 :(得分:5)
您应该将blogRepo.Object
而不是blogRepo
传递给您的控制器。