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