【问题标题】:How I can unit-test my entity context我如何对我的实体上下文进行单元测试
【发布时间】:2013-03-29 07:17:31
【问题描述】:

我正在研究实体框架并希望对我的应用程序进行单元测试。问题是EntityContext。我正在使用 Moq 库。 Moq 可用于接口和抽象类。但是这里的问题是 EntityContext 是从 DbContext 派生的,它既不是抽象类也不是接口。我如何为上下文提供最小起订量对象。我试图找到最佳实践,但大多数帖子都很旧(2、3 岁)。我正在使用 EF 5.0,我认为微软或其他人应该做一些事情来测试 EntityContext。

public class Repository
{
private EntityContext _context;
public EntityContext Context;

    public Repository()
    {
        _context = new EntityContext();
    }

    internal Repository(MockContext mockContext)  // Mock Context. Is it possible?
    {
        _context = mockContext;
    }
}

注意:对于重复的问题,我很抱歉,但我无法找到有关此主题的最新问题。

【问题讨论】:

  • 更好的标题可能是:“如何模拟上下文”或“如何测试存储库”
  • @FaisalHafeez - 你看过我的回答了吗?

标签: c# entity-framework unit-testing moq entity-framework-5


【解决方案1】:

我要做的是让 EntityContext 实现一个接口。假设 EntityContext 公开了一个员工列表和一个部门列表。你会做这样的事情:

public interface IEntityContext
{
    IQueryable Departments { get; set;}
    IQueryable Employees { get; set;}
}

在您的存储库中需要一个 IEntityContext 实现。在生产代码中发送真正的实现,EntityContext。在单元测试中,在指定您的期望后发送 Mock().Object 。 另一种选择是实现一个 FakeEntityContext,它实现了 IEntityContext 并在您的单元测试中用作内存数据库。

【讨论】:

    猜你喜欢
    • 2018-05-10
    • 2020-02-05
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多