Linq Fake / Mock上下文

时间:2009-12-19 19:26:41

标签: c# linq .net-3.5

假设我在SqlUserRepository中获得了以下代码:

var user = from u in NHibernateLinqContext.Linq<User>() ...

我想要的是为我的FakeuserRepository提供类似的上下文

var user = from u in FakeLinqContext.Linq<User>() ...

就像那样,我将能够在我的FakeUserRepository的SqlUserRespository中使用相同的逻辑。但是,我不知道Linq上下文如何工作以及我如何能够为我的FakeUserRepository创建一个。

理想情况下,我希望通过示例,我的AnythingUserRepository在构造函数参数中获取上下文。

示例:

SqlUserRepository() : base(NHibernateLinqcontext)
FakeUserRepository() : base(FakeLinqcontext)

知道如何实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

您可以通过为其提供适当的构造函数来允许将NHibernateLinqContext依赖项注入到SqlUserRepository中,例如

public SqlUserRepository(NHibernateLinqContext context)
{
    // ...
}

如果你想对你的SqlUserRepository进行单元测试,那么你可以为你的目标构造提供一个模拟的NHibernateLinqContext。

如果要对使用SqlUserRepository的类进行单元测试,那么您只需模拟SqlUserRepository即可。我不确定你为什么需要一个具体的FakeUserRepository。