The error occurred in moq Dbset because I m not updating the reference of GetEnumerator after adding new Entity in DB set.
Code :
public class Utility
{
public static Mock<dbset<tentity>> GenerateMockEntity<tentity>(List<tentity> entityList) where TEntity : class
{
var list = new List<tentity>();
list.AddRange(entityList);
var query = list.AsQueryable();
var entityMockSet = new Mock<dbset<tentity>>() { CallBase = true};
entityMockSet.As<iqueryable<tentity>>().Setup(m => m.Provider).Returns(query.Provider);
entityMockSet.As<iqueryable<tentity>>().Setup(m => m.Expression).Returns(query.Expression);
entityMockSet.As<iqueryable<tentity>>().Setup(m => m.ElementType).Returns(query.ElementType);
entityMockSet.As<ienumerable<tentity>>().Setup(m => m.GetEnumerator()).Returns(query.GetEnumerator());
entityMockSet.Setup(x => x.Add(It.IsAny<tentity>())).Callback<tentity>(x => {
list.Add(x);
entityMockSet.As<ienumerable<tentity>>().Setup(m => m.GetEnumerator()).Returns(list.GetEnumerator());
}).Returns<tentity>(x => x);
return entityMockSet;
}
}</tentity></ienumerable<tentity></tentity></tentity></ienumerable<tentity></iqueryable<tentity></iqueryable<tentity></iqueryable<tentity></dbset<tentity></tentity></tentity></tentity></dbset<tentity>