【发布时间】:2014-02-07 04:20:00
【问题描述】:
我们有一个枚举:
enum Letters
{
A,
B,
C,
D,
E
}
当我尝试时:
var frozenLetter = fixture.Freeze(Letters.D);
奇怪的是,frozenLetter == A。
var letter = fixture.Create<Letters>();
var anotherLetter = fixture.Create<Letters>();
Letter 和 anotherLetter 都等于 A,因此 Letters 类型已被冻结,但为枚举中的第一个常量,而不是指定的那个。
有没有办法将枚举冻结为我希望的常量?
【问题讨论】:
-
我可能遗漏了一些东西,但是 Freeze 方法有什么作用?
-
它“冻结”该类型,以便在请求该类型的实例时始终返回相同的实例。请参阅 AutoFixture 的作者 Mark Seeman 的 AutoFixture Freeze。
-
嗯,看起来像 AutoFixture 的 enums are not supported。作为一种解决方法,您可以在类的顶部声明一个常量 (
private const Letters constLetter = Letters.D;) 并使用它而不是使用 AutoFixture 创建枚举。 -
他们现在是:见EnumGenerator.cs。这将是一个简单的解决方法,但 Letters 的一个实例是间接创建的,它是其他类型的嵌套值。
-
@Pierre-LucPineault 请注意,您链接到的资源明确指出该问题已在 2010 年 7 月修复!
标签: c# .net autofixture