gpt4 book ai didi

asp.net-mvc - 测试 : Entity Framework by faking context

转载 作者:行者123 更新时间:2023-12-04 12:09:39 24 4
gpt4 key购买 nike

此刻我正在吃自己。就像 Entity Framework 不可测试一样。我已经阅读了很多使用工作单元或最小起订量或 repo 模式的帖子和主题。

我正处于无法更改应用程序架构的很多阶段。该应用程序此时完全可以正常工作,但要确保我需要高代码覆盖率,因此需要对其进行测试。

为了进行测试,我使用了“假上下文”方法,我可以使用假上下文进行模拟,使用真实上下文连接到数据库。

我以此为例。
http://romiller.com/2010/09/07/ef-ctp4-tips-tricks-testing-with-fake-dbcontext/

在那里,您可以看到上下文被拆分并用作接口(interface)。喜欢:

    public interface IEmployeeContext
{
IDbSet Department Departments { get; }
IDbSet Employee Employees { get; }
int SaveChanges();
}

public class EmployeeContext : DbContext, IEmployeeContext
{
public IDbSet Department Departments { get; set; }
public IDbSet Employee Employees { get; set; }
}

public class FakeEmployeeContext : IEmployeeContext
{
public FakeEmployeeContext()
{
this.Departments = new FakeDepartmentSet();
this.Employees = new FakeEmployeeSet();
}

public IDbSet Department Departments { get; private set; }

public IDbSet Employee Employees { get; private set; }

public int SaveChanges()
{
return 0;
}
}

}

所以测试和一切正常。我似乎无法做的唯一一件事是测试一个带有 .State 的 Controller ,我在其中检查它是否已更改,例如:
EntityState.Modified

因为这使用了一个接口(interface),所以我需要将它添加到接口(interface)上下文中。并创建一个新的。或者我错过了什么?在那种情况下创建整个方法可能不是我的意图..我怎样才能让它发挥作用

最佳答案

您是否考虑过执行集成测试?

您可以针对真正的 EF DBContext 进行集成测试,
只需在单元测试项目的 App.config 中给它一个不同的连接字符串。

阅读 this以及所有的答案。

关于asp.net-mvc - 测试 : Entity Framework by faking context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16694187/

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