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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使FsCheck生成与MaxLengthAttribute相关的随机字符串?相关的知识,希望对你有一定的参考价值。

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

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

不是开箱即用,但你可以这样做:

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

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

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

以上是关于如何使FsCheck生成与MaxLengthAttribute相关的随机字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 FsCheck 生成随机数作为基于属性的测试的输入

Expecto FsCheck在生成字符串时出现堆栈溢出异常

如果随机生成的输入没有用,我如何重新尝试基于属性的测试?

如何使 ajaxfileupload 与动态生成的文件输入一起工作

使用 Gitlab 仪表板 - 如何将 grafonnet 与 jsonnet 一起使用以生成我可以与 Grafana 一起使用的 json 文件

如何使 Luigi 任务生成内存列表作为目标