在 F# 中使用带有 Unquote 的断言消息?

Using assertion messages with Unquote in F#?

一些测试断言框架允许您向断言添加自定义消息,例如使用 NUnit 的以下内容:

Assert.AreEqual(1, result, "the result should be one")

在 F# 中使用 [Unquote][1] 时是否可以做同样的事情?

test <@ result = 1 @>

更新

我最接近的是在引用的表达式中添加一个简单的注释。由于我这样做的动机是记录正在验证的内容(我倾向于断言不止一次!),这足以满足我的需求。

test <@ 
        // the result should be one
        result = 1 
     @>

另一个更新

我一直在使用 Stephen 的建议来使用 ignore "description here";,我真的很喜欢。如果我这样声明自己的函数,我发现它更容易阅读:

> let inline checking _ = ()
> let result = 2;;
> test <@ checking "the result should be one"; result = 1 @>;;

Test failed:

checking "the result should be one"; result = 1
(); result = 1
result = 1
2 = 1
false

您可以这样做(使用 F# Interactive)

> let result = 2;;
> test <@ ignore "the result should be one"; result = 1 @>;;

Test failed:

ignore "the result should be one"; result = 1
(); result = 1
result = 1
2 = 1
false

但是如果你使用像 expectedactual 这样的变量名,Unquote 的输出就足够丰富了,不需要这样的补充注释

> let actual = 2;;
> let expected = 1;;            
> test <@ actual = expected @>;; 

Test failed:

actual = expected
2 = 1
false