如何使FsCheck生成随机字符串遵守MaxLengthAttribute?

4

是否可能让FsCheck生成随机记录并遵守MaxLengthAttribute。示例记录类型:

type Person =
    {
        Id: int
        [<System.ComponentModel.DataAnnotations.MaxLength(256)>]
        FirstName: string
        [<System.ComponentModel.DataAnnotations.MaxLength(256)>]
        LastName: string
    }
1个回答

1

不是开箱即用的,但你可以做类似这样的事情:

Arb.generate<Person> 
|> Gen.where (fun p -> p.FirstName.Length <= 256 && p.LastName.Length <= 256)

接下来的问题是基于传入的类型创建Gen.where的谓词,即使用反射查找具有MaxLength属性的属性,获取值并限制长度。

还要注意,默认情况下,每个测试生成的字符串的最大长度为50,因此这可能无关紧要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接