我正在尝试编写单元测试,但遇到了一个奇怪的问题
[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);
}
这引发异常:
Castle.DynamicProxy.InvalidProxyConstructorArgumentsException:无法实例化类的代理:找不到与给定参数匹配的构造函数:System.Linq.EnumerableQuery`
有人可以帮忙吗?
实施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>>();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句