如何使FsCheck生成与MaxLengthAttribute相关的随机字符串?

时间:2018-03-02 03:58:15

标签: .net f# fscheck

FsCheck是否可以生成与MaxLengthAttribute相关的随机记录。示例记录类型:

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

1 个答案:

答案 0 :(得分:1)

不是开箱即用,但您可以执行以下操作:

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

然后根据传入的东西的类型创建Gen.where的谓词,即使用反射来查找具有MaxLength属性的属性,获取值并限制长度。< / p>

另请注意,默认情况下,每次测试生成100个值的生成字符串的最大长度为50,因此这可能没有实际意义。