簡體   English   中英

模型是否可以/應該僅包含用於單元測試的屬性/變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM