我需要生成唯一的非null
字符串用作Dictionary
键。我试过类似的东西:
public static Gen<NonNull<string>> UniqueStrings()
{
return from s in Arb.Default.NonNull<string>().Generator
select s;
}
然后我用UniqueString()
在:
public static Arb<Foo> Foos()
{
// Foo's constructor will use the string parameter
// as key to an internal Dictionary
return (from nonNullString in UniqueStrings()
select new Foo(nonNullString.Item)).ToArbitrary();
}
但是,我在属性测试中遇到异常,Foo
因为 FsCheck 有时会两次生成相同的字符串,从而导致DuplicateKeyException
.
如何生成要传递给构造函数的唯一字符串Foo
?