2015-09-24 4 views
3

Когда я добавляю пример целевой xUnit2 к моему поддельному файлу сборки, я получаю эту ошибку:Получения «вариант» отсутствует ошибку с целью xUnit2 в поддельном файле сборка

error FS0001: This expression was expected to have type string option but here has type string

Target Пример из FAKE xunit2 documentation

Target "Test" (fun _ -> 
    !! (testDir @@ "xUnit.Test.*.dll") 
     |> xUnit2 (fun p -> {p with HtmlOutputPath = (testDir @@ "xunit.html")}) 
) 

Visual Studio выделяет раздел кода (testDir @@ "xunit.html").

Я понимаю, что это ожидает два параметра, но я не знаю достаточно F # еще, чтобы выяснить, как решить эту проблему:

До включая цель XUnit, мой FAKE билд работает нормально. Я добавил open Fake.Testing.XUnit2 в файл сборки, и я не получил ошибки в ссылке xUnit2.

Любая помощь будет оценена по достоинству.

ответ

3

Таким образом, ошибка в том, что тип HtmlOutputPath является

HtmlOutputPath : string option 

В Поддельный я считаю, что @@ делает Path.Combine так testDir @@ "xunit.html должен иметь тип строки.

Для получения типов, чтобы соответствовать, вы можете использовать

HtmlOutputPath = Some(testDir @@ "xunit.html") 

Это говорит о том, что документация для FAKE неверен.

+0

Я думаю, что вы на правильном пути, но проблема не в том, что 'testDir @@" xunit.html "' является 'string', но должен быть' string option'? –

+0

yep, но, видимо, какая-то магия случается, когда вы делаете 'open' в пространстве имен - эту часть я не могу понять (поскольку OP утверждает, что она работает после' open' –

+0

Фактически, я просто хочу пояснить, что Я добавил 'open' в начало файла FAKE, поэтому у меня есть действительная ссылка на код xUnit2. – ptilton