Если вы знакомы с C #, Java или C ++, вы можете ссылаться на экземпляр класса, используя зарезервированное слово this
в элементах экземпляра. В F # вы должны явно дать имя экземпляру класса для каждого определения члена, а в примере FsUnit данное имя просто test
, но на самом деле оно не используется. Вы могли бы точно так же написать метод теста как
[<Test>] member this.
``when I try to solve #1 should return [the magic number]`` ()=
euler.problem1 |> should equal [the magic number]
Но учтите, что в наши дни и xUnit.net, и NUnit разрешают применять свои атрибуты [<Fact>]
и [<Test>]
соответственно для маркировки тестов функций let bound в модулях, без необходимости использования TestFixture
s и т.п., что намного лучше подходит для F #. Так, например, тест, который вы дали, может и, по моему мнению, должен быть записан как:
module EulerProblemTests () =
[<Test>]
let ``when I try to solve #1 should return [the magic number]`` () =
let euler = new EulerProblem()
euler.problem1 |> should equal [the magic number]
Более того, вы, вероятно, не хотите создавать свои решения проблем как члены type
, такие как EulerProblem
, а скорее как функции внутри модуля.