簡體   English   中英

FsUnit不會匹配異常-F#

[英]FsUnit won't match exception - F#

我正在嘗試使用基於XUnit構建的FsUnit斷言異常。 我已經從FsUnit網站進行了此測試:

[<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 SqlJuxtFunctionalTests.Scenarios.CompareTableScenarios+boom@22
   at SqlJuxtFunctionalTests.Scenarios.CompareTableScenarios.boom() in C:\projects\SqlJuxt\src\SqlJuxtFunctional.Tests\CompareTableScenarios.fs:line 22

我正在使用以下版本的庫:

  • FSharp.Core:4.0.0.1
  • 凈:4.6.2
  • FsUnit.Xunit:1.4.1.0
  • XUnit.core:2.1.0

我以為XUnit可能有問題,所以我嘗試通過以下測試切換為使用基於NUnit的FsUnit:

[<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()

任何幫助將不勝感激,因為我不知所措。

我已經弄清楚了。 為了使測試正常進行,我需要使用基於NUnit的FsUnit,並將FSharp降級以使用FSharp 3.1.2.5。 如果您使用基於NUnit和FSharp 4.0.0.1的FsUnit,則會得到可怕的MissingMethodException

我不知道為什么代碼不能在FsUnit.Xunit上運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM