在 AutoFixture 中生成一个长字符串

Generating a long string in AutoFixture

我想生成一个长度为 80 的随机字符串。

我在想 Fixture.Create<string>(length: 80);Fixture.Create<string>(minimumLength: 60, maximumLenth: 100);。两者都可以正常工作。

创建自定义项似乎 矫枉过正,但也许这是正确的方法。关于获取比默认字符串 更短 的字符串有很多问题,这可以通过子字符串实现,但我需要更长的字符串。

检查 this 个问题。

这表示 StringLength 属性可以帮助生成给定长度的字符串。

还有来自库维护者的 article。在这篇文章中他说像eqfixture.Build<MyObject>.With(x = x.MyString, 0, 100);这样的方法出于设计考虑是不会实现的

因此,如果您不想使用该属性,则必须 运行 和 Customization

没有直接的方法来完成这个,

我最接近的是使用 Fixture.CreateMany<string>(3).Join("")。感谢 Mark Seemann 的提示。

我只想要一个超过 50 个字符的字符串,但不关心它是 100 还是 300。但是如果我想要一个精确的长度,我也可以调用 Fixture.CreateMany<string>(3).Join("").Substring(length)

试试这个:

string.Join(string.Empty,Fixture.CreateMany<char>(stringLength))

stringLength 是您希望生成的字符串的长度。

默认情况下 Fixture.Create<string>() 创建一个长度为 36 的字符串。
所以如果你想要一个长度超过 36 的字符串,这段代码将生成一个长度为 72 的字符串:

string.Join(string.Empty,Fixture.CreateMany<string>(2))