I'm using NSubstitute to test an application using Entity Framework 6.
I used this article as the base for my setup: https://msdn.microsoft.com/en-us/library/dn314429.aspx
Whenever my code enumerates an entity set twice, all the entities disappear. This can be demonstrated by running .ToList() twice in a row.
Any idea how to fix this issue?
I created a simple test to recreate this behavior:
[TestMethod]
public void DisappearingEntities()
{
var db = Substitute.For<Entities>();
var entityList = new[]
{
new Role(1, "Role1"),
new Role(2, "Role2"),
new Role(3, "Role3"),
new Role(4, "Role4")
}.ToList();
var queryableEntityList = entityList.AsQueryable();
var set = Substitute.For<DbSet<Role>, IQueryable<Role>>();
db.Roles.Returns(set);
set.AsQueryable().Provider.Returns(queryableEntityList.Provider);
set.AsQueryable().Expression.Returns(queryableEntityList.Expression);
set.AsQueryable().ElementType.Returns(queryableEntityList.ElementType);
set.AsQueryable().GetEnumerator().Returns(queryableEntityList.GetEnumerator());
db.Set<Role>().Returns(db.Roles);
set.AddRange(entityList);
Assert.IsTrue(db.Roles.ToList().Count() == 4);
//assert fails
Assert.IsTrue(db.Roles.ToList().Count() == 4);
}