繁体   English   中英

单元测试 - 将存储库传递给基类构造函数的不良做法

[英]Unit testing - bad practice to pass repository into base class constructor

在我的应用程序中,我的大多数类都继承自Base类。 还有一个用于数据处理的存储库类。

为了使它们可测试,我一直在我的课程中这样做:

private IMyRepository _rep;

public MyViewModel()
    : this(new MyRepository())
{ }

public MyViewModel(IMyRepository rep)
{
    _rep = rep;
    DoStuff();
}

但是有任何好的理由 - 在可测试性或功能方面 - 我不应该将所有这些转移到Base类中,然后在继承DoStuff()之前从继承的构造函数运行它以获取我的存储库吗?

您可以将存储库放入基类构造函数中

  • 如果从baseclass继承的每个类使用相同的 repository-type或
  • 如果你使用像MyBaseClase<ELementtype>这样的genric参数MyBaseClase<ELementtype>获取一个IRepository<ElementType>

我通常为不同的模型类设置不同的存储库,因此我的客户模型获取客户存储库,发票模型获取发票存储库。

如果基类具有一些需要存储库的功能,我只会将存储库添加到基类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM