Я пытаюсь утвердить исключение, используя FsUnit, построенный на XUnit. Я взял этот тест с FsUnit website:FsUnit не будет соответствовать исключению - F #
[<Fact>]
let ``boom``() =
(fun() -> failwith "BOOM!" |> ignore) |> should throw typeof<System.Exception>
Я использую Resharper 2016 года запустить тест, и я получаю следующее сообщение об ошибке:
FsUnit.Xunit+MatchException
Exception of type 'FsUnit.Xunit+MatchException' was thrown.
Expected: System.Exception
Actual: was [email protected]
at SqlJuxtFunctionalTests.Scenarios.CompareTableScenarios.boom() in C:\projects\SqlJuxt\src\SqlJuxtFunctional.Tests\CompareTableScenarios.fs:line 22
Я использую следующие версии библиотек, участвующие:
- FSharp.Core: 4.0.0.1
- .Net: 4.6.2
- FsUnit.Xunit: 1.4.1.0
- XUnit.core: 2.1.0
Я думал, что это может быть проблема с XUnit поэтому я попытался коммутационного использовать FsUnit на основе NUnit со следующим испытанием:
[<Test>]
let ``boom nunit``() =
(fun() -> failwith "BOOM!" |> ignore) |> should throw typeof<System.Exception>
версия NUnit бросает MissingMethodException
:
System.MissingMethodException : Method not found: 'Void FsUnit.TopLevelOperators.should(Microsoft.FSharp.Core.FSharpFunc`2<!!0,!!1>, !!0, System.Object)'.
at File1.boom()
Любая помощь будет высоко оценена как я на мой ум заканчивается этим.
Также посмотрите [этот ответ] (http://stackoverflow.com/questions/36238316/missingmethodexception-when-testing-a-function-that-takes-a-function-parameter/36241071#36241071). –