我开始使用FsUnit测试F#代码。 它可以在F#风格上表达主张,例如:
[<Test>]
member this.``Portugal voted for 23 countries in 2001 Eurovision contest``() =
this.totalVotes
|> getYearVotesFromCountry "Portugal" 2001
|> Seq.length
|> should equal 23
我从FsUnit那里获得的“可能等于23”。 在这里,联邦大学如何界定:
平等×=新的平等
浮动点数并不简单。 我必须在方法上实行平等。 C#:
Assert.That(result).Is.EqualTo(1).Within(0.05);
当然,我想在F#中写一下:
result |> should equal 1 within 0.05
但这并不可行。 我最后确定了一项新的职能:
let almostEqual x = (new EqualConstraint(x)).Within(0.01)
或者,如果我想降低精确度,我可以把它作为第二点:
let equalWithin x y = (new EqualConstraint(x)).Within(y)
但是,他们当中没有一人tty。 我想以更自然的方式界定F#的“随身”功能,以便与平等一起使用。 F#不支持超负荷的方法,因此,它像我这样认为,可以这样“平等”单独使用或与“随身”一起使用。
任何想法?