Я хочу настроить поведение AutoFixtureво время создания таким образом, чтобы можно было настроить некоторые зависимые объекты после того, как свойства прибора будут сгенерированы и назначены.
Например, предположим, что у меня есть метод, который настраивает User
, поскольку его свойство IsDeleted
всегда должно быть ложным для определенного набора тестов:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsDeleted { get; set; }
}
public static ObjectBuilder BuildUser(this Fixture f)
{
return f.Build().With(u => u.IsDeleted, false);
}
(я передаю ObjectBuilder
возвращается к тесту, чтобы при необходимости можно было дополнительно настроить прибор.)
Что я хотел бы сделать, так это автоматически связать этого пользователя с анонимной коллекцией по его Id
во время создания, но я не могу сделать это как есть, потому что Id
] не был сгенерирован к тому времени, когда я передаю возвращаемое значение обратно в модульный тест. Вот что я пытаюсь сделать:
public static ObjectBuilder BuildUserIn(this Fixture f, UserCollection uc)
{
return f.Build()
.With(u => u.IsDeleted, false);
.AfterCreation(u =>
{
var relation = f.Build()
.With(ucm => ucm.UserCollectionId, uc.Id)
.With(ucm => ucm.UserId, u.Id)
.CreateAnonymous();
Repository.Install(relation);
}
}
Возможно ли что-то подобное? Или, возможно, есть лучший способ выполнить мою задачу по созданию графа анонимных объектов?