这有帮助。浏览source http://autofixture.codeplex.com/SourceControl/changeset/view/a2b734445f4a#Src%2fAutoFixtureDocumentationTest%2fContact%2fValidatingValueObject%2fContactTest.cs经常有帮助。
var indicators=_f.CreateMany<Indicator>();
_f.Register<IList<Indicator>>(()=>indicators.ToList());
不过可能还有更好的方法。
总的来说,目前的情况是这样的:
_f=new Fixture().Customize(new AutoMoqCustomization());
var indicators=_f.CreateMany<Indicator>();
_f.Register<IList<Indicator>>(()=>indicators.ToList());
var regionName=_f.CreateAnonymous<string>();
_f.Register<string,Country,bool,Region>((name,country,call)=>
new Region(regionName,_f.CreateAnonymous<Country>(),true));
_c.Set(x=>x.Regions,_f.CreateMany<Region>().ToList());
_f.Register<IList<ManagementBoardEntry>>(()=>
_f.CreateMany<ManagementBoardEntry>().ToList());
_f.Register<IList<FinancialInfoEntry>>(()=>
_f.CreateMany<FinancialInfoEntry>().ToList());
_f.Register<IList<Partner>>(()=>_f.CreateMany<Partner>().ToList());
_p=_f.CreateAnonymous<Project>();
不能说这很漂亮(欢迎任何重构建议),但它仍然比手动编写所有内容要好得多。
Using IList
肯定有一个错误的选择。更糟糕的是 - 我正在使用IList
对于属性也是如此。这邀请客户直接使用它们,而不是通过聚合根。
使用时有一个缺点params
。不能使用多个(除非我再次缺少一些基础知识)。我收到列表作为输入(Excel 工作表 DOM 的一部分),无法知道编译时会有多少元素。
模型确实很新鲜。刚刚烘烤它(所以我很可能对那些空检查是错误的,将与客户和业务分析师讨论这一点)。
我的策略是自由地塑造它并通过单元测试将其推向所需的状态。这就是我有点不喜欢严格的 TDD 的实际原因。它夺走了我的注意力,迫使我过早地思考细节而不是整体。我更喜欢画草图并进行完善,直到看起来不错为止。但这可能是因为我对测试不够流畅。
不管怎样 - 谢谢你的好建议。我会继续了解更多关于AutoFixture的知识。