AutoFixtureの作成時の動作をカスタマイズして、フィクスチャのプロパティが生成および割り当てられた後にいくつかの依存オブジェクトを設定できるようにしたいと考えています。
たとえば、特定のテストセットではプロパティが常にfalseである必要があるUser
ため、をカスタマイズするメソッドがあるとします。IsDeleted
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsDeleted { get; set; }
}
public static ObjectBuilder<User> BuildUser(this Fixture f)
{
return f.Build<User>().With(u => u.IsDeleted, false);
}
(ObjectBuilder
必要に応じてフィクスチャをさらにカスタマイズできるように、テストに戻します。)
私がやりたいのはId
、作成時にそのユーザーを匿名コレクションに自動的に関連付けることですId
が、戻り値を単体テストに返すまでに生成されていないため、これをそのまま行うことはできません。ちゃんとした。これが私がやろうとしていることのようなものです:
public static ObjectBuilder<User> BuildUserIn(this Fixture f, UserCollection uc)
{
return f.Build<User>()
.With(u => u.IsDeleted, false);
.AfterCreation(u =>
{
var relation = f.Build<UserCollectionMembership>()
.With(ucm => ucm.UserCollectionId, uc.Id)
.With(ucm => ucm.UserId, u.Id)
.CreateAnonymous();
Repository.Install(relation);
}
}
このようなことは可能ですか?または、匿名オブジェクトグラフを作成するという私の目標を達成するためのより良い方法がありますか?