存储在模型中的数据的常用/最佳做法是什么。我正在编写用于计算的单元测试,并且我有一个属性,该属性返回实际用于在数据库中存储数据的其他属性的值。在模型中定义如下
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
留在模型中还是将其逻辑复制到单元测试中?
答案 0 :(得分:1)
模型可以包含仅用于单元测试的属性吗?
嗯,没有限制。您可以添加所需的任何属性。
您应该这样做吗?
否。添加此类属性不是一个好习惯。同样,这全都与您要如何设计类有关。根据抽象和封装的规则,您应该只向类使用者公开必需的属性。
理想情况下,在单元测试中,也应该检查被测试的类/方法的最终结果,而不是测试内部/私有变量。
希望这会有所帮助。
答案 1 :(得分:1)
如果leftOverDebtInSystemCurrencyForDate
与您的应用程序完全无关,则应将其从代码中删除。
如果您的应用程序访问了leftOverDebtInSystemCurrencyForDate
(而不是单元测试),则应将其保留在模型中或提取到服务中。
单元测试不应包含leftOverDebtInSystemCurrencyForDate
的任何逻辑。