在我们的应用程序中,过去没有测试 目前我正在重构我们的代码,以便我们可以编写验收和单元测试。要做的是,我需要对数据库进行抽象。我们使用Entity Framework 6作为我们的ORM。
我创建了一个实现接口的InMemoryDb
类,也是EF-Context实现的。
EF - DbContext
类提供了Database
类型System.Data.Entity.Database
的属性。
不幸的是,在我们的代码中,这个属性被多次使用,例如:
Connection = (SqlConnection)dbBase.Entities.Database.Connection;
如果验收测试Entities
属于InMemoryDb
类型。
问题是,在验收测试中,Database
属性为 null
,我不知道如何正确设置属性。
我试图在构造函数中初始化它,但它不起作用:
public class InMemoryDb : IEfContext, IInMemoryDb
{
public InMemoryDb()
{
this.per_person = new TestDbSet<per_person>();
this.Database = new Database(null);
}
public void Dispose()
{
throw new System.NotImplementedException();
}
public Task<int> SaveChangesAsync()
{
throw new System.NotImplementedException();
}
public Database Database { get; }
public DbSet<per_person> per_person { get; set; }
[...]
}
提前致谢
答案 0 :(得分:0)
我希望它会对你有所帮助。 只需查看 Effort.EF6 即可。该lib将在NMemory的帮助下设置您的整个应用程序数据(baseI上下文在内存中)。 我已经在我们的应用程序中使用它,它就像一个魅力,非常容易使用。
您完全与SQL Server中的SQL Server或数据库等外部物理依赖关系脱离。