Ich versuche DbContext und DbSet zu verspotten. Dies funktioniert für meine vorherigen Komponententests, aber das Problem tritt auf, wenn mein Code die ToList-Methode zum zweiten Mal auf DbSet aufruft.DbSet Mock, keine Ergebnisse beim zweiten Aufruf von ToList
Erste dbSet.ToList() gibt mocked Ergebnisse zurück. Zweite gibt 0 Elemente zurück;
var queryableData = new List<string>{ "a", "b", "c" }.AsQueryable();
var mockDbSet = new Mock<DbSet<string>>();
var q = mockDbSet.As<IQueryable<string>>();
q.Setup(m => m.Provider).Returns(queryableData.Provider);
q.Setup(m => m.Expression).Returns(queryableData.Expression);
q.Setup(m => m.ElementType).Returns(queryableData.ElementType);
q.Setup(m => m.GetEnumerator()).Returns(queryableData.GetEnumerator());
DbSet<string> dbset = mockDbSet.Object;
IQueryable<string> query = dbset;
//RESULTS: abc
var a1 = dbset.ToList();
foreach (var a in a1)
Console.Write(a);
//NO RESULTS
var a2 = dbset.ToList();
foreach (var a in a2)
Console.Write(a);
Das hat mich umgebracht. Großer Fang. – RMD
Das war für ein paar Monate ein Bär für mich. Ich kam schließlich in eine Situation, in der ich es nicht vermeiden konnte. Das hat sehr geholfen! –
Das hat mein Leben so viel besser gemacht. Vielen Dank. –