gpt4 book ai didi

entity-framework - 如何对重写的 OnModelCreating 中的设置进行单元测试

转载 作者:行者123 更新时间:2023-12-03 09:34:40 25 4
gpt4 key购买 nike

我正在使用 Entity Framework 6 并且在我的上下文中我已经覆盖了 OnModelCreating 方法:

protected override void OnModelCreating(DbModelBuilder modelBuilder)

在方法内部,我设置了数据库配置。我想测试一下设置的内容。例如,我有以下代码:
modelBuilder.HasDefaultSchema("public");

我想要一个单元测试来检查是否调用了参数值为“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");
});

请指教。谢谢

最佳答案

为了建立在 vappolinario 的回答之上,我使用了 Mock<DbModelBuilder>并将其传递给 TestableDbContext ,然后验证是否正确调用了模拟。

我在我的例子中使用了 Moq 和 xUnit

[Fact]
public void MyContext_HasCorrectDefaultSchema()
{
var mockModel = new Mock<DbModelBuilder>();
var context = new TestableMyContext();

context.TestOnModelCreation(mockModel.Object);

mockModel.Verify(m => m.HasDefaultSchema("public"), Times.Once());
}

关于entity-framework - 如何对重写的 OnModelCreating 中的设置进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32821949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com