FsCheck使用ICollection <T>生成POCO

时间:2019-09-12 12:29:14

标签: c# fscheck

我正在使用C#中的xunit和FsCheck生成随机类数据。由于EF,其中一些包含ICollection<ChildElement> Children {get; set;}属性。由于这种特性,生成器被卡住了。我知道可以为特定类定义自己的生成器。但这很诱人,我会想念财产的。

是否可以为此定义一个更通用的解决方案?跟随生成器也不起作用:

    public class ICollectionGenerator
    {
        public static Arbitrary<ICollection<T>> Collection<T>()
        {
            return Arb.From(Arb.Generate<List<T>>().Select(x => (ICollection<T>)x));
        }
    }

1 个答案:

答案 0 :(得分:0)

FsCheck内置了ICollection<T>的生成器,因此您无需自己提供它。但是,如果T是FsCheck不知道如何立即生成的类型,则无法使用-大概ChildElement是其中一种类型。但是,如果您可以编写一个Arbitrary<ChildElement>实例并将其提供给需要ICollection<ChildElement>的测试,则FsCheck将能够自动将它们放在一起。