C# 使用实体框架和DbContext测试问题
我正在进行一个项目,希望测试一些使用实体框架的类。在这个过程中,我创建了一个testdbcontextC# 使用实体框架和DbContext测试问题,c#,entity-framework,unit-testing,C#,Entity Framework,Unit Testing,我正在进行一个项目,希望测试一些使用实体框架的类。在这个过程中,我创建了一个testdbcontext class FakeContext : DbContext, IDbContext { public IDbSet<UserAcc> UserAcc { set; get; } public IDbSet<Movies> Movies { set; get; } public new IDbSet<T> Set<T>()
class FakeContext : DbContext, IDbContext
{
public IDbSet<UserAcc> UserAcc { set; get; }
public IDbSet<Movies> Movies { set; get; }
public new IDbSet<T> Set<T>() where T : class
{
return base.Set<T>();
}
}
[TestClass]
public class EFStorageTest
{
private IStorageConnection _ef;
[TestMethod]
public void AddToContextTest()
{
_ef = new EFConnectionFactory().GetConnection<FakeContext>();
_ef.Add(new UserAcc());
_ef.SaveChanges();
Assert.AreEqual(1, _ef.Get<UserAcc>().Count());
}
}
类FakeContext:DbContext,IDbContext
{
公共IDbSet UserAcc{set;get;}
公共IDbSet电影{set;get;}
public new IDbSet Set(),其中T:class
{
返回base.Set();
}
}
[测试类]
公共类测试
{
专用IStorageConnection\u ef;
[测试方法]
public void AddToContextTest()
{
_ef=新的EFConnectionFactory().GetConnection();
_添加(新的UserAcc());
_ef.SaveChanges();
AreEqual(1,_ef.Get().Count());
}
}
当我尝试将实体添加到上下文中时,我假设它将保留在内存中,但它会被VisualStudio自动保存在某个位置。自动创建的数据库位于何处?默认情况下,EF会在SQL server express上创建名称等于完整数据上下文类名的数据库。也就是说,在你的情况下
server=.\SQLEXPRESS;database=Your.Namespace.FakeContext
顺便说一句,我不建议您在测试中使用真实的数据库,如果您不进行验收测试,这是缓慢、脆弱和耗时的