Ant*_*pod 5 unit-testing entity-framework
我正在使用Entity Framework 6,在我的上下文中,我重写了OnModelCreating方法:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
Run Code Online (Sandbox Code Playgroud)
在该方法内部,我设置了数据库配置。我想测试一下设置。例如,我有以下代码:
modelBuilder.HasDefaultSchema("public");
Run Code Online (Sandbox Code Playgroud)
我想进行单元测试,以检查是否调用了具有参数值“ public”的HasDefaultSchema。
或像下面的示例一样,我想测试实体UserGroup的HasMany和WithMany方法是否被调用:
modelBuilder.Entity<UserGroup>()
.HasMany<User>(g => g.Users)
.WithMany(u => u.Groups)
.Map(ug =>
{
ug.MapLeftKey("GroupId");
ug.MapRightKey("UserId");
ug.ToTable("UserGroupMembers");
});
Run Code Online (Sandbox Code Playgroud)
请指教。谢谢
您可以为 DbContext 创建一个显式调用的存根OnModelCreating并检查 DbContext 的状态DbModelBuilder
public class TestableMyDbContext : MyDbContext
{
public void TestModelCreation(DbModelBuilder model)
{
OnModelCreating(model);
// check your model an throw an exception if invalid
}
}
Run Code Online (Sandbox Code Playgroud)
在 TestMethod 中你捕获了异常
[TestMethod]
public void Should_Initialize_Context()
{
try
{
var context = new TestableMyDbContext();
context.TestModelCreation(new DbModelBuilder());
}
catch (Exception ex)
{
Assert.Fail(ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1325 次 |
| 最近记录: |