我们正在将我们的项目从.net core 1.0迁移到2.1。自从我将代码迁移到2.1之后,我们的某些测试就开始失败。一种这样的情况是因为当子属性之一为null时,我们的实体抛出NRE。当我们在以下实体上调用 DbSet.Include 时会发生这种情况:
await this.goalEnvisionDbContext.UserConfirmations.Include(x => x.User).SingleOrDefaultAsync(uc => uc.UserId == userId);
在监视窗口和上下文中查看用户ID的值。但是函数调用返回null,因为我们包括了加载子实体的调用。我应该如何修复测试?
作为参考,我们正在使用内存数据库进行测试。这是我为测试设置上下文的方法,
var builder = new DbContextOptionsBuilder<GoalEnvisionDbContext>();
builder.UseInMemoryDatabase("GoalEnvision.UnitTests");
dbContextOptions = builder.Options;
我们在其他几个测试中也遇到了类似的问题,但是我在Google上搜索并遇到了一个解决方案,建议我们使用同步调用,它将在2.1中修复,但我已经在2.1.4上运行了。其次,并非总是可以用同步调用来切换异步调用。