【发布时间】:2016-03-23 13:28:26
【问题描述】:
运行单元测试时出现以下错误(支持“MyContext”上下文的模型自创建数据库以来已更改)
在我的上下文构造函数中,我设置了
Database.SetInitializer<MyContext>(null);
在我的单元测试中,我正在模拟上下文。我也将此代码添加到单元测试中,但它仍然失败。除了Database.SetInitializer<MyContext>(null);,还有什么需要做的吗
我的上下文在这里
public class MyContext : DbContext
{
public MyContext () : base("MyContext")
{
Database.SetInitializer<MyContext>(null);
}
public virtual DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().ToTable("Users");
}
}
我在单元测试中的 Mock
var _context = new Mock<MyContext>();
Database.SetInitializer<MyContext>(null);
_classUnderTest = new Repo(_context.Object);
我在这里得到错误
_context.Entry(user).State = EntityState.Added;
【问题讨论】:
-
您的 Mock 模型不反映数据库的状态。检查 Mock 是否真的与真实的 DB 模型完全匹配。
标签: c# entity-framework ef-code-first code-first