Мы находимся в процессе миграции нашего проекта с .net core 1.0 на 2.1.С тех пор, как я перенес код на 2.1, некоторые из наших тестов перестали работать.Одним из таких случаев является то, что наша сущность выдает NRE, когда одно из дочерних свойств имеет значение null.Это происходит, когда мы вызываем DbSet.Include для сущности, например:
await this.goalEnvisionDbContext.UserConfirmations.Include(x => x.User).SingleOrDefaultAsync(uc => uc.UserId == userId);
См. Значение для идентификатора пользователя в окне просмотра и в контексте.Но вызов функции возвращает ноль, потому что мы включили вызов для загрузки дочерних объектов.Как мне исправить тесты?
Для справки, мы используем базу данных в памяти для тестирования.Вот как я настраиваю контекст для моих тестов:
var builder = new DbContextOptionsBuilder<GoalEnvisionDbContext>();
builder.UseInMemoryDatabase("GoalEnvision.UnitTests");
dbContextOptions = builder.Options;
У нас были похожие проблемы для нескольких других тестов, но я погуглил и наткнулся на решение, которое предлагает использовать синхронизирующие вызовы и которое будет исправлено в2.1 но я уже работаю на 2.1.4.Во-вторых, не всегда возможно переключать асинхронные вызовы с помощью синхронизирующих вызовов.
См. Обходной путь здесь и еще одно упоминание проблемы здесь