MVP模式:将数据库依赖关系与演示者分开?

时间:2011-10-27 15:25:50

标签: asp.net unit-testing dependency-injection webforms moq

每当我尝试对演示者和模拟视图进行单元测试时,我最终会遇到太多的数据库依赖性

 public EditAccount(IAccountEditPage _view, ISession _session, IResponse _response)
 {

 }

 public void view_SaveUser()
 {
   //Class that takes the view's data and persists it to DB  
 }

显然我不能为这个演示者编写单元测试,因为我有一个使用我的模型类具有强大的数据库依赖性的结果。

如果没有构造函数注入触发我的演示者中的数据库的每个类,我应该如何删除对数据库的依赖?我不想每次都看到这种情况。

我正在使用moq,如果它有帮助。

编辑:另外我应该提一下,“view_SaveUser”中的代码非常精简,不是直接的数据库访问或类似的东西。它通常只有几行。我没有超越主持人AFAIK的范围。

1 个答案:

答案 0 :(得分:1)

如果您不想在构造函数上注入实例,那么您使用IoC框架作为Spring.NetCastle Windsor使用setter注入来注入依赖项。

这样做,您只需要在框架配置中指定哪些类用于实际代码和测试项目,将自动注入依赖项,您将避免使用该构造函数。