Я пытаюсь смоделировать свою базу данных EF-Core, используя провайдера оперативной памяти, как описано здесь: https://docs.microsoft.com/en-us/ef/core/miscellaneous/testing/in-memory.
Я структурировал свои тесты так:
[Test]
public async Task PerformTest1() {
var options = new DbContextOptionsBuilder<MeldingenModel>()
.UseInMemoryDatabase(nameof(PerformTest1))
.Options;
var protos = new List<MeldingPrototype> { ... };
var meldingen = new List<Melding> { ... };
using (var seedingcontext = new MeldingenModel(options)) {
seedingcontext.MeldingPrototypes.AddRange(protos);
seedingcontext.Meldingen.AddRange(meldingen);
seedingcontext.SaveChanges();
}
using (var db = new MeldingenModel(options))
using (var mock = AutoMock.GetLoose(cgf => cgf.RegisterInstance(db))) {
// do test
}
}
Первый раздел - ввод данных в базу данных. Каждый тест имеет похожий шаблон, и каждый использует nameof(<methodname>)
в качестве аргумента UseInMemoryDatabase
. Насколько я понимаю, строки документации этого метода, различные строковые аргументы должны гарантировать, что все созданные базы данных разделены, но, похоже, они все еще влияют друг на друга. Если я запускаю каждый тест по отдельности, они все проходят, но если их запускать одновременно, они не проходят. Причина сбоя заключается в том, что начальные данные одного метода также присутствуют во время других тестов.
Я использую тестовый фреймворк nUnit.
Может кто-нибудь помочь мне получить правильно изолированные тестовые базы данных?