【问题标题】:MVP Pattern : Separating the database dependency from the presenter?MVP 模式:将数据库依赖与演示者分离?
【发布时间】:2011-10-27 15:25:50
【问题描述】:

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

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

 }

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

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

如果没有构造函数在我的演示者中注入每个接触数据库的类,我应该如何删除对数据库的依赖?我不想在我拥有的每一个视图中每次都这样做。

如果有帮助,我正在使用最小起订量。

编辑:另外我应该提到“view_SaveUser”中的代码非常精简,不是直接数据库访问或类似的东西。通常只有几行。我并没有超出演示者 AFAIK 的范围。

【问题讨论】:

  • 构造函数依赖于数据提供者是很常见的。我不熟悉 MVP,但在 MVC 中,它的标准做法有一个 IRepository 构造函数参数。您还可以通过像 Unity 这样的 DI 容器使用属性注入。

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


【解决方案1】:

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

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

【讨论】:

  • 有趣;谢谢。大多数 MVP 模式示例都很简洁,缺乏他在现实世界中的使用信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多