gpt4 book ai didi

unit-testing - 在 InMemoryDatabase 中模拟 EF 核心计算字段以进行单元测试

转载 作者:行者123 更新时间:2023-12-05 05:53:16 25 4
gpt4 key购买 nike

在我的数据库中,我计算了由 EF core 使用 HasComputedColumnSql fluent API 创建的字段“FullName”,并且在应用程序中一切正常。

但是我有一些使用 InMemory 数据库的单元测试,这些单元测试使用 InMemory 数据库中为空的“FullName”列测试一些逻辑。

知道如何模拟内存数据库中的计算列行为吗?

最佳答案

我正在使用以下解决方案:

  1. 为 SavingChanges 添加事件处理器
  2. 在处理程序中,遍历您有计算列的类型的实体
  3. 初始化计算值

例子:添加事件处理程序:

dbContext.SavingChanges += OnSaveChanges;

在我的例子中,类名是 Ressource 结束计算属性是“FullName”:

private void OnSaveChanges(object? sender, SavingChangesEventArgs e)
{
var dbContext = sender as <your context class>;
var ressources = dbContext.ChangeTracker.Entries().Where(x => x.Entity is Ressource).Select(x => x.Entity as Ressource).ToList();
foreach (var item in ressources)
item.FullName = item.FirstName + " " + item.LastName;
}

希望对您有所帮助。

关于unit-testing - 在 InMemoryDatabase 中模拟 EF 核心计算字段以进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69921163/

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