我正在尝试在 F# 中编写一些 NUnit 测试,并且无法将函数传递给ThrowsConstraint
. 蒸馏(非)工作样品如下。
open System.IO
open NUnit.Framework
[<TestFixture>]
module Example =
[<Test>]
let foo() =
let f = fun () -> File.GetAttributes("non-existing.file")
Assert.That(f, Throws.TypeOf<FileNotFoundException>())
这编译得很好,但我从 NUnit 测试运行程序中得到以下信息:
FsTest.Tests.Example.foo:
System.ArgumentException : The actual value must be a TestDelegate but was f@11
Parameter name: actual
虽然我可以使用ExpectedException
属性解决问题,但我的问题是在这种情况下使用 F# 函数的正确方法是什么?