的子集創建匿名枚舉值比方說,我們有一個枚舉類型定義爲:從所有價值
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)。如果這不起作用,那麼如果你能用一些代碼來更新你所描述的代碼就可以了... –