[英]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()之前從繼承的構造函數運行它以獲取我的存儲庫嗎?
您可以將存儲庫放入基類構造函數中
MyBaseClase<ELementtype>
這樣的genric參數MyBaseClase<ELementtype>
獲取一個IRepository<ElementType>
。 我通常為不同的模型類設置不同的存儲庫,因此我的客戶模型獲取客戶存儲庫,發票模型獲取發票存儲庫。
如果基類具有一些需要存儲庫的功能,我只會將存儲庫添加到基類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.