我对单元测试有些新意,所以希望这个问题有意义。
我的设置: Visual Studio 2010 实体框架4.1 MOQ
我的BAL中有一个Service类,它在我的DAL中使用UnitOfWork。 UnitOfWork管理对各种存储库的访问,这些存储库又通过Context对象访问数据库。
我想为服务类公共方法创建一个单元测试,它负责使用lambda表达式的一些非常复杂的“GetNextObject”类型逻辑。
问题: 我可以非常轻松地模拟我的DBContext并创建一个DBSet对象,我想要测试我的Services方法(服务类本质上是查询存储库)。这是正确的方法吗?还是更多的集成测试?通过模拟Context我删除了数据库,但我仍在使用UnitOfWork和Repository类。我是否应该对所有这些对象进行复杂的模拟?
谢谢! AFrieze
答案 0 :(得分:0)
假设您的服务仅依赖于存储库和unitofwork,您不必模拟DbConext,是吗?通常,我们不主要模拟DbContext,因为没有太多要测试,因为repository / unitofwork基本上是dbcontext的包装器。为了测试您的服务,模拟存储库和单元工作应该足够了。如果要测试数据库操作,请执行集成测试。