c# - Mocking EF DbContext using Moq not returning DbSet as IQueryable - Stack Overflow

admin2025-04-16  2

I have this code:

IQueryable<AccessPoint> testAcP =
    new List<AccessPoint>() { new AccessPoint() { Id = 1, Token = "testPoint", Enabled = 1 } }.AsQueryable();
var mockSet = new Mock<DbSet<AccessPoint>>();

mockSet.As<IQueryable<AccessPoint>>().Setup(m => m.Provider).Returns(testAcP.Provider);
mockSet.As<IQueryable<AccessPoint>>().Setup(m => m.Expression).Returns(testAcP.Expression);
mockSet.As<IQueryable<AccessPoint>>().Setup(m =>m.ElementType).Returns(testAcP.ElementType);
mockSet.As<IQueryable<AccessPoint>>().Setup(m => m.GetEnumerator()).Returns(testAcP.GetEnumerator());
        
var dbContext = new Mock<IApplicationDbContext>();

dbContext.Setup(c => c.AccessPoints).Returns(mockSet.Object);
var filter = new AccessPointsFilter() { Enabled = AcPassState.Active };

var areaService = new AccessPointsService(new QuerySelector<AccessPoint>(), new QueryOrderer<AccessPoint>(), dbContext.Object);
    
var result = dbContext.Object.AccessPoints.AsQueryable();

The result is empty. What am I doing wrong?

I expect to get DbSet as IQueryable, but now it is empty.

转载请注明原文地址:http://www.anycun.com/QandA/1744762249a87258.html