Próbuję wyśmiać DbContext i DbSet. Działa to dla moich poprzednich testów jednostkowych, ale problem występuje, gdy mój kod wywoływał metodę ToList na DbSet drugi raz.DbSet mock, brak wyników podczas wywoływania ToList po drugie
Pierwsza dbSet.ToList() zwraca fałszywe wyniki. Drugi zwraca 0 elementów;
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);
To mnie zabijało. Ładny chwyt. – RMD
To był dla mnie niedźwiedź od kilku miesięcy. W końcu znalazłem się w sytuacji, w której nie mogłem tego uniknąć. To bardzo pomogło! –
To właśnie uczyniło moje życie o wiele lepszym. Dziękuję Ci. –