Я получил ошибку при попытке использовать NSubstitute в моем DbContext. До сих пор я использовал пакет EntityFramework.Testing и следующий код для настройки моего DbContext в тестах. Это было довольно просто, вот пример с их сайта:
// Create some test data
var data = new List<Blog>
{
new Blog{ Name = "BBB" },
new Blog{ Name = "CCC" },
new Blog{ Name = "AAA" }
};
// Create a DbSet substitute.
var set = Substitute.For<DbSet<Blog>, IQueryable<Blog>, IDbAsyncEnumerable<Blog>>()
.SetupData(data);
var context = Substitute.For<BloggingContext>();
context.Blogs.Returns(set);
Это прекрасно работает с версией 3.1.0
, но выдает следующее исключение, если я обновляю NSubstitute до 4.0
.
System.MissingMethodException
Метод не найден: 'Система .__ Canon NSubstitute.Arg.Any ()'.
NSubstitute.NSubstituteDbSetExtensions.SetupData [TEntity] (DbSet'1 dbSet, данные ICollection'1, поиск Func'2)
Интересно, есть ли хорошее решение для имитации контекста EF с помощью асинхронной поддержки, или мне просто придерживаться версии 3.1.0.