簡體   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