我想我错过了什么,但我想要做的是:
我的C#代码中有两个数据库实体。一个是另一个孩子,因此孩子包含一个……
当我为属性提供值时,我希望所有使用相同构建器/ fixture构建的实例都会提供值。 所以你注意到的是期望的行为。
您可以提供一个“工厂”,而不是已经生成的值,它将在实例创建期间为属性生成值。 最新的Autofixture版本引入了重载 .With 接受函数作为参数的方法。
.With
var rand = new Random(); Func<Guid> pickProductId = () => products[rand.Next(0, 5)].Id; var options = fixture.Build<ProductOption>() .With(option => option.ProductId, pickProductId) .CreateMany(10) .ToList(); // Prove options.Select(o => o.ProductId).ToHashSet().Should().HaveCountGreaterThan(1); // Pass Ok