私は次の種類があります。特定のタイプの多くを作成するときに、列挙型の値をシードとして使用するようにAutoFixtureを設定するにはどうすればよいですか?
今public enum Status
{
Online,
Offline
}
public class User
{
private readonly Status _status;
public User(Status status) { _status = status; }
public Status Status {get {return _status; }}
public string Name {get;set;}
}
fixture.CreateMany<User>
を実行するとき、私はAutoFixtureは、状態ごとに1つずつ2 Users
を返すようにしたいです。 Name
のような他のすべてのプロパティは、匿名データで埋めなければなりません。
質問:
これを行うにはAutoFixtureを設定するにはどうすればよいですか?
は、私は、次のこの試みた:
登録コレクションをその
User
オブジェクトニュースアップ:fixture.Register( () => Enum.GetValues(typeof(Status)).Cast<Status>().Select(s => new User(s)));
このアプローチの問題はAutoFixtureが他方を満たしていないということです特性は次のとおりです。
Name
カスタマイズ
User
ファクトリを使用してfixture.Create
を使用して、コレクションに登録する:f.Customize<User>(c => c.FromFactory((Status s) => new User(s))); f.Register(() => Enum.GetValues(typeof(Status)) .Cast<Status>() .Select(s => (User)f.Create(new SeededRequest(typeof(User), s), new SpecimenContext(f))));
どちらか動作しませんでした。種子は使用されていません。
あなたの答えをありがとう。 Unfortunatellyは、 'Status'プロパティが' readonly'でない場合には動作しません。 「最初に」「決して」戻ってこない(私は少なくとも30秒待った)。 –
'readonly'キーワードはそれとは関係ありません。私は私のreproから 'readonly'キーワードを削除しましたが、結果は変更されませんでした。 –
私は裏書きフィールドが読み込み専用ではないと言っているわけではありません。私は*プロパティ*については読んでいない、つまり 'public Status Status {get;セット; } '。 –