gpt4 book ai didi

用于单元测试的 C# 通用存储库

转载 作者:行者123 更新时间:2023-11-30 22:42:49 25 4
gpt4 key购买 nike

我有以下用于单元测试的虚假存储库。我将如何在此存储库中实现 Attach(T entity) 方法?

(在我的真实存储库中,Attach(T entity) 方法用于将对象附加到我的 Entity Framework 4 数据上下文)。

public class FakeRepository<T> : IRepository<T> where T : class, new()
{
private static List<T> entities = new List<T>();

public IQueryable<T> Entities
{
get { return entities.AsQueryable(); }
}

public T New()
{
return new T();
}

public void Create(T entity)
{
entities.Add(entity);
}

public void Delete(T entity)
{
entities.Remove(entity);
}

public void Attach(T entity)
{
//How to implement Attach???
}

public void Save()
{
//Do nothing
}

public void Dispose()
{
return;
}
}

最佳答案

要回答这个问题,您必须问自己““Attach”的目的是什么?您可能知道重点是告诉存储库“这个对象保存在数据库中,但您目前没有跟踪它;我已经对其进行了更新,我希望您在我告诉您提交更改时提交它们。”

因此,要测试 Attach 是否正常工作,您应该维护一个附加对象的集合,并在将参数传递给 Attach 时向该集合添加一个实体.

所以,最简单的实现是

entities.Add(entity);

但你可以考虑更细粒度的东西。请注意,您需要公开一个方法,让您断言实体已成功附加(在 EF4 中,您可以使用 ObjectStateManager.TryGetObjectStateEntry)。

关于用于单元测试的 C# 通用存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4210527/

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