romantitov / MockQueryable

Mocking Entity Framework Core operations such ToListAsync, FirstOrDefaultAsync etc
MIT License
767 stars 74 forks source link

how would I get firstordefaultasync working? #59

Closed lastlink closed 2 years ago

lastlink commented 2 years ago
_mockContext = new Mock<ApplicationDbContext>(options);
var data = items.AsQueryable();
var mockSet = data.BuildMockDbSet();

mockSet.Setup(x => x.FirstOrDefaultAsync(It.IsAny<System.Linq.Expressions.Expression<Func<Notes, bool>>>(), It.IsAny<System.Threading.CancellationToken>())).ReturnsAsync((object pred) =>
            {
                var predicate = (System.Linq.Expressions.Expression<Func<Notes, bool>>)pred;
                var r = (Notes)data.FirstOrDefault(pred);
                return r;
            });

 mockSet.Setup(x => x.GetQueryable()).Returns(mockSet.Object);
            _mockContext.Setup(m => m.Notes).Returns(mockSet.Object);
lastlink commented 2 years ago

Fixed

_mockContext = new Mock<ApplicationDbContext>(options);
var data = items.AsQueryable();
var mockSet = data.BuildMockDbSet();
 _mockContext.Setup(m => m.Notes).Returns(mockSet.Object);