我需要生成唯一的非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
的构造函数呢?
Guid.NewGuid().ToString();
将生成唯一的字符串。 - Dmitry Bychenko