【发布时间】:2019-02-02 05:17:00
【问题描述】:
我是 F# 的新手,如果这是一个新手问题,请原谅我。
我正在学习 Vladimir Khorikov 的 Pluralsight 课程“领域驱动设计实践”。他的示例是使用 C# 实现的,因此为了练习,我尝试在 F# 中实现它们。
他有一个类“Money”,在 F# 中如下所示:
type Money =
{
OneCentCount: int;
TenCentCount: int;
QuarterCount: int;
OneDollarCount: int;
FiveDollarCount: int;
TwentyDollarCount: int;
}
我对此很好,并且可以在这个类上实现不同的操作,尽管其中一些变得有点笨拙,因为记录类型在 F# 中没有构造函数。 (即,虽然我想说
let money1 = Money(1,2,3,4,5,6)
这会引发一个错误,即 Money 没有构造函数。所以我必须这样做
let money1 = Money {
OneCentCount = 1;
TenCentCount = 2;
QuarterCount = 3;
OneDollarCount = 4;
FiveDollarCount = 5;
TwentyDollarCount = 6}
但是,现在他开始进行测试,如果您尝试创建任何值为负的 Money 记录,他想要一个引发 InvalidOp 异常的测试 - 这是一个合理的要求。
但是由于没有 Money 类型的构造函数,我无法弄清楚将代码放在哪里来测试无效值并抛出异常。
谁能给我一些建议?谢谢。
【问题讨论】:
-
您认为此 Money 记录的
invalid值是多少? -
正如我试图实现的测试要求中所述,无效值是其中任何值为负的值。例如,您不能有 -10 便士的 Money 金额。
标签: f#