【发布时间】:2014-04-10 16:00:00
【问题描述】:
我刚刚开始使用 AutoFixture,我正在学习基础知识(据我所知,还有更多内容),但我遇到了问题,我不能 100% 确定什么是最佳实践像这样。
我正在测试一个控制器,部分过程是动作可以返回两个视图之一。
- 如果某个类别有子类别 - 显示类别列表视图
- 如果某个类别没有子类别,则显示产品列表视图
所以我正在考虑对该行为进行一些测试,但返回的夹具数据会有所不同。一个会返回一个 0 的计数,另一个会返回一个大于 0 的计数,所以我希望夹具能帮我解决这个问题。
我一直在环顾四周,也许我必须创建某种自定义,但希望基本 API 可以帮助我。我试过这个:
var category = _fixture.Build<Category>()
.Do(x => x.SubCategories = _fixture.CreateMany<Category>(3).ToList())
.Create();
_fakeCategoryService
.Setup(x => x.GetById(id))
.Returns(category);
这编译和测试运行(并失败),但子类别的计数始终为 0,所以我认为我在 do 中对 Create Many 的调用都是错误的(看起来有点错误,但我仍然不确定是什么它应该替换为)。
更新:应该更好地阅读备忘单!
var category = _fixture.Build<Category>()
.With(x => x.SubCategories, _fixture.CreateMany<Category>(3).ToList())
.Create();
这很有效,如果有更好的方法请告诉我。
【问题讨论】:
标签: autofixture