的子集创建匿名枚举值比方说,我们有一个枚举类型定义为:从所有价值
enum Statuses
{
Completed,
Pending,
NotStarted,
Started
}
我想打Autofixture对我来说比其他例如创建一个价值待定。
所以(假设循环发电)我想获得:
完成,NotStarted,启动,已完成,NotStarted,...
的子集创建匿名枚举值比方说,我们有一个枚举类型定义为:从所有价值
enum Statuses
{
Completed,
Pending,
NotStarted,
Started
}
我想打Autofixture对我来说比其他例如创建一个价值待定。
所以(假设循环发电)我想获得:
完成,NotStarted,启动,已完成,NotStarted,...
要做到这一点,最简单的方法是用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();
还有其他方法,但这对于即席查询来说是最简单的。
这是[单向性](http://stackoverflow.com/a/17117080/467754)。 –
不幸的是不工作:AutoFixture无法从Ploeh.AutoFixture.Kernel.ISpecimenBuilderComposer创建实例,很可能是因为它没有公共构造函数,是抽象类型或非公共类型。 – dzendras
您使用的是哪个版本的AutoFixture?使用AutoFixture 3,如果你执行'fixture.Create()'(其中'fixture'是一个新的Fixture()'实例),你将以循环方式得到每个'Statuses'枚举值。你甚至不需要我之前提到的[链接](http://stackoverflow.com/a/17117080/467754)。如果这不起作用,那么如果你能用一些代码来更新你所描述的代码就可以了... –