let isDenied du =
match du with
| Denied _ -> true
| _ -> false
或者从那以后
let f x = match x with ...
等于
let f = function ...
,可能是:
let isDenied = function Denied _ -> true | _ -> false
然后您的测试看起来像:
display |> isDenied |> should be True
请注意
True
,大写T,是一个限制条件。如果将其与布尔值进行比较,则
display |> isDenied |> should equal true
如果您发现必须编写大量这些自定义谓词,可能有一个更通用的解决方案,涉及为NUnit或XUnit或您在后端使用的任何测试框架编写自定义约束。但作为F#的新手,您可能应该先使用简单的解决方案,然后再进行推广。
附言。如果您决定编写自定义约束,请查看
https://github.com/fsprojects/FsUnit/blob/master/src/FsUnit.NUnit/FsUnit.fs
(如果您正在使用NUnit)或
https://github.com/fsprojects/FsUnit/blob/master/src/FsUnit.Xunit/FsUnit.fs
(如果您正在使用XUnit)以获得灵感。