从所有值的子集创建匿名枚举值

时间:2014-01-06 18:46:08

标签: c# autofixture

假设我们将枚举类型定义为:

enum Statuses
{
    Completed,
    Pending,
    NotStarted,
    Started
}

我想让Autofixture为我创造一个价值,除了悬而未决。

所以(假设循环生成)我想获得:

已完成,未启动,已启动,已完成,未启动,...

1 个答案:

答案 0 :(得分:19)

最简单的方法是使用AutoFixture的Generator<T>

var statuses = fixture
    .Create<Generator<Statuses>>()
    .Where(s => Statuses.Pending != s)
    .Take(10);

如果您只需要一个值,但想确定它不是Statuses.Pending,那么您可以这样做:

var status = fixture
    .Create<Generator<Statuses>>()
    .Where(s => Statuses.Pending != s)
    .First();

还有其他方法,但这对于即席查询来说是最简单的。