我刚刚开始使用AutoFixture,我正在逐步了解基本知识(据我所见,还有更多的东西),但是我有一个问题,而且我不能百分之百地确定这样的事情的最佳实践是什么。
我正在测试一个控制器,部分过程是操作可以返回两个视图中的一个。
因此,我正在考虑对这种行为进行一些测试,但是返回的夹具数据将是不同的。一个会返回一个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中创建许多的调用都是错误的(它看起来有点错误,但我仍然不确定应该用什么替换它)。
更新:应该更好地阅读备忘单!
var category = _fixture.Build<Category>()
.With(x => x.SubCategories, _fixture.CreateMany<Category>(3).ToList())
.Create();如果有更好的方法,请告诉我。
发布于 2014-04-10 17:43:55
是的,Build是对的。
如果要自定义单 Category的创建算法,请使用Build
var actual = fixture
.Build<Category>()
.With(x => x.SubCategories,
fixture.CreateMany<Category>().ToList())
.Create();
Assert.NotEmpty(actual.SubCategories);如果要自定义的创建算法,则所有 Category实例都使用Customize
fixture.Customize<Category>(c => c
.With(x => x.SubCategories,
fixture.CreateMany<Category>().ToList()));
var actual = fixture.Create<Category>();
Assert.NotEmpty(actual.SubCategories);发布于 2014-04-10 18:03:58
希望基本的API能帮到我
如果您知道如何倾听:) AutoFixture最初是作为测试驱动开发( TDD )工具构建的,而TDD完全是关于反馈的。本着古斯的精神,您应该听您的测试。在本例中,它的意思与框架设计指南相同
不要提供可设置的集合属性。。
与其将列表批发地分配给属性,不如考虑
Add等.在后一种情况下,AutoFixture将在调用构造函数时自动提供一个填充的集合,尽管在这种情况下,由于您有一个潜在的递归图,所以可能需要显式处理。
在第一种情况下,AutoFixture不会做任何事情,但是有一个AddManyTo扩展方法,使您能够在一个语句中填充一个集合:
fixture.AddManyTo(category.SubCategories);发布于 2019-09-17 14:48:13
您可以使用自定义列表来执行此存根:
var stub = _fixture.Build<Entity>().With(x=> x.field, config).CreateMany().ToList();文档。
https://stackoverflow.com/questions/22993145
复制相似问题