I have a method that gets all records from some database table:
public async Task<List<T>> GetAllRecordsAsync<T>(EntitiesNew source) where T : class, IGetAllRecords
{
if (source != null)
return await source.Set<T>().ToListAsync();
return null;
}
I am trying to write an unit test. My test method is:
public async Task GetAllRecordsAsyncTest()
{
var data = new List<TABLE_NAME>
{
new TABLE_NAME {VALID= 1, NAME = "test 1"},
new TABLE_NAME {VALID= 1, NAME = "test 2"}
}.AsQueryable();
var mockSet = new Mock<DbSet<TABLE_NAME>>();
mockSet.As<IQueryable<TABLE_NAME>>().Setup(m => m.Provider).Returns(data.Provider);
mockSet.As<IQueryable<TABLE_NAME>>().Setup(m => m.Expression).Returns(data.Expression);
mockSet.As<IQueryable<TABLE_NAME>>().Setup(m => m.ElementType).Returns(data.ElementType);
mockSet.As<IQueryable<TABLE_NAME>>().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());
var mockContext = new Mock<EntitiesNew>();
mockContext.Setup(x => x.TABLE_NAME).Returns(mockSet.Object);
var database = new Database();
var records = await database.GetAllRecordsAsync<TABLE_NAME>(mockContext.Object);
int numberOfRecords = records.Count;
Assert.AreEqual(2, numberOfRecords, "Wrong number of records.");
}
The problem is that I get actual number of records from database. How can I get number of records from mocked object?