[英]Can/should model contain properties/variables only for unit testing?
模型中存儲的數據的常用/最佳做法是什么。 我正在編寫用於計算的單元測試,並且我有一個屬性,該屬性返回實際用於在數據庫中存儲數據的其他屬性的值。 在模型中這樣定義
bool IsDebtAndPayCurrencyTheSame;
public decimal leftOverDebtInSystemCurrencyForDate
{
get { return IsDebtAndPayCurrencyTheSame ? debt.allDebt.systemCurrency : Math.Round(debt.leftOverDebt.documentCurrency * Convert.ToDecimal(DebtCurrencyKoefPayoDate), 2); }
}
單元測試看起來像這樣
Assert.AreEqual(100, income.detailRow[0].account.leftOverDebtInSystemValueForDate);
那么我應該在模型中保留leftOverDebtInSystemCurrencyForDate
還是將其邏輯復制到單元測試中?
模型可以包含僅用於單元測試的屬性嗎?
好吧,沒有限制。 您可以添加所需的任何屬性。
你應該那樣做嗎?
沒有。 添加此類屬性不是一個好習慣。 同樣,這全都與您要如何設計類有關。 根據抽象和封裝的規則,您應該只向類使用者公開必需的屬性。
理想情況下,在單元測試中,也應該檢查被測試的類/方法的最終結果,而不是測試內部/私有變量。
希望這可以幫助。
如果leftOverDebtInSystemCurrencyForDate
與您的應用程序完全無關,則應將其從代碼中刪除。
如果您的應用程序訪問了leftOverDebtInSystemCurrencyForDate
(而不是單元測試),則應將其保留在模型中或提取到服務中。
單元測試不應為leftOverDebtInSystemCurrencyForDate
包含任何邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.