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

C#用于单元测试的通用存储库,c#,unit-testing,entity-framework-4,repository-pattern,C#,Unit Testing,Entity Framework 4,Repository Pattern,我有以下用于单元测试的假存储库。如何在此存储库中实现Attach(T entity)方法 (在我的真实存储库中,Attach(T entity)方法用于将对象附加到我的entity Framework 4数据上下文) 公共类FakeRepository:i位置,其中T:class,new() { 私有静态列表实体=新列表(); 公共可查询实体 { 获取{return entities.AsQueryable();} } 公共交通(新) { 返回新的T(); } 公共无效创建(T实体) { 实体。

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

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

公共类FakeRepository:i位置,其中T:class,new()
{
私有静态列表实体=新列表();
公共可查询实体
{
获取{return entities.AsQueryable();}
}
公共交通(新)
{
返回新的T();
}
公共无效创建(T实体)
{
实体。添加(实体);
}
公共作废删除(T实体)
{
实体。移除(实体);
}
公共无效附加(T实体)
{
//如何实现附加???
}
公共作废保存()
{
//无所事事
}
公共空间处置()
{
返回;
}
}

删除实体成员上的静态单词。现在就做吧

enitities.Add(entity)

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

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

因此,最简单的实现是

entities.Add(entity);

<>但是您可以考虑更细粒度的东西。注意,您需要公开一种方法,该方法允许您断言该实体已成功连接(在EF4中,您可以使用<代码> ObjtStaseMeMaGr.TrgGETObjistStaseEnguts)。

是的,这是有意义的。谢谢。
entities.Add(entity);