2014-01-06 24 views
8

すべての値のサブセットから匿名の列挙型の値を作成します。私はAutofixtureが、例えば以外の私のために価値を創造したいのですがのは、私たちのように定義された列挙型があるとしましょう

enum Statuses 
{ 
    Completed, 
    Pending, 
    NotStarted, 
    Started 
} 

を保留中。

だから私は取得したいと思います(ラウンドロビン世代を想定):

完成し、NotStartedは、開始、完了、NotStartedは、...それをする

+0

[これを行う方法](http://stackoverflow.com/a/17117080/467754)です。 –

+0

残念なことに、AutoFixtureはPloeh.AutoFixture.Kernel.ISpecimenBuilderComposerからインスタンスを作成できませんでした。これは、publicコンストラクタを持たない可能性が高い、抽象型または非公開型です。 – dzendras

+0

どのバージョンのAutoFixtureを使用していますか? Auto Fixture 3では 'fixture.Create ()'( 'fixture'は'新しいFixture() 'インスタンスです)を実行すると、それぞれの' Statuses' enum値がラウンドロビン方式で取得されます。あなたは前に私が言及した[link](http://stackoverflow.com/a/17117080/467754)は必要ありません。それがうまくいかない場合は、あなたが何を記述するかを再現するいくつかのコードで質問を更新することができれば素晴らしいでしょう... –

答えて

13

最も簡単な方法は、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(); 

他の方法もありますが、これはアドホッククエリにとって最も簡単です。

+0

私は似たようなことをしていますが、一般的にEnum型のものに興味を持っています。たとえば文字列一致に基づいて値を無視したい不明または未初期化。 EnumGeneratorによって返された値をインターセプトする方法はありますか? – Schneider

+1

@Schneider複雑です。新しい質問をしてください。 –

+0

ありがとうございました。ここにはqn http://stackoverflow.com/questions/41628519/how-to-exclude-certain-enumerations-from-all-enumeration-typesがあります – Schneider

関連する問題