简体   繁体   English

莫庆EF抛出异常

[英]Moqing EF throws exception

I am trying to write a unit test but encountered a strange problem 我正在尝试编写单元测试,但遇到了一个奇怪的问题

 [TestMethod]
    public void Delete_user_save_via_context()
    {

        var data = new List<admins> 
        { 
            new admins() {id = 1,  login = "test" },

        }.AsQueryable();


        var mockSet = new Mock<DbSet<admins>>(data);
        mockSet.As<IQueryable<admins>>().Setup(x => x.Provider).Returns(data.Provider);
        mockSet.As<IQueryable<admins>>().Setup(x => x.Expression).Returns(data.Expression);
        mockSet.As<IQueryable<admins>>().Setup(x => x.ElementType).Returns(data.ElementType);
        mockSet.As<IQueryable<admins>>().Setup(x => x.GetEnumerator()).Returns(data.GetEnumerator);

        var mockContext = new Mock<Entities>();
        mockContext.Setup(x => x.admins).Returns(mockSet.Object);  //Here i have Exception


        var userService = new UserService(mockContext.Object);
        userService.Delete("test");

        mockSet.Verify(m => m.Remove(It.IsAny<admins>()),Times.Once);
        mockContext.Verify(m => m.SaveChanges(), Times.Once);

    }

This throws exception : 这引发异常:

Castle.DynamicProxy.InvalidProxyConstructorArgumentsException: Can not instantiate proxy of class: Could not find a constructor that would match given arguments: System.Linq.EnumerableQuery` Castle.DynamicProxy.InvalidProxyConstructorArgumentsException:无法实例化类的代理:找不到与给定参数匹配的构造函数:System.Linq.EnumerableQuery`

Can somebody help with this ? 有人可以帮忙吗?

Implementation of admin class : 实施admin类:

public partial class admins
{
    public int id { get; set; }
    public string login { get; set; }   
}
var mockSet = new Mock<DbSet<admins>>(data);

应该:

var mockSet = new Mock<DbSet<admins>>();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM