我的UnitTest应该模拟我的UnitOfWork,Repository和Context还是上下文?

时间:2011-08-12 19:37:25

标签: unit-testing repository entity-framework-4.1 moq unit-of-work

我对单元测试有些新意,所以希望这个问题有意义。

我的设置: Visual Studio 2010 实体框架4.1 MOQ

我的BAL中有一个Service类,它在我的DAL中使用UnitOfWork。 UnitOfWork管理对各种存储库的访问,这些存储库又通过Context对象访问数据库。

我想为服务类公共方法创建一个单元测试,它负责使用lambda表达式的一些非常复杂的“GetNextObject”类型逻辑。

问题: 我可以非常轻松地模拟我的DBContext并创建一个DBSet对象,我想要测试我的Services方法(服务类本质上是查询存储库)。这是正确的方法吗?还是更多的集成测试?通过模拟Context我删除了数据库,但我仍在使用UnitOfWork和Repository类。我是否应该对所有这些对象进行复杂的模拟?

谢谢! AFrieze

1 个答案:

答案 0 :(得分:0)

假设您的服务仅依赖于存储库和unitofwork,您不必模拟DbConext,是吗?通常,我们不主要模拟DbContext,因为没有太多要测试,因为repository / unitofwork基本上是dbcontext的包装器。为了测试您的服务,模拟存储库和单元工作应该足够了。如果要测试数据库操作,请执行集成测试。