1

我是 Dynamics 365 的新手,最近开始使用假 XRM 测试我的代码。

我刚刚遇到了一个与货币(货币)字段计算相关的问题,正在为其创建附加字段(名称以“_Base”结尾)。在单元测试中,货币字段的基础不会被重新计算。

场景是: - 被测代码在“Account”实体上设置“Money”类型的“turnover”字段。- 后来总结了“周转”基础货币部分。(帐户在总结之前在上下文中刷新)

localAccount.turnover = new Money(100);

...

var sumOfTurnovers = localAccounts.Sum(s => s.turnover_Base?.Value ?? 0); // <-- returns 0 in unit tests

结果:营业额总和计算为 0,而在实际开发环境中计算正确。

通常情况下,被测代码依赖于重新计算的值。

如何在单元测试中模拟此类基础货币字段的重新计算?

4

1 回答 1

0

FakeXrmEasy 不模拟此行为。可能是因为它取决于环境——基础货币是什么,汇率是多少。

根据您要实现的目标,您需要在安排上下文期间预先计算基础货币字段。就像是

SetMoneyField(string fieldName, decimal amount, decimal exchangeRate) {
  SetAttributeValue(fieldName, amount);
  SetAttributeValue(fieldName+"_base", amount*exchangeRate);
}
于 2020-09-23T20:40:21.567 回答