unit-testing - 如何使用 AutoFixture 创建对象但不填写任何属性

标签 unit-testing autofixture

使用 AutoFixture,我可以使用 Create 方法轻松创建数据对象的实例,如下所示:

_fixture.Create<FilterItems>()

使用这种技术,我可以保护将来可能发生的构造函数中的任何更改,但它也会填写所有在这种情况下(因为它是过滤器的集合)不需要的属性。

有没有办法只告诉 AutoFixture 创建对象,但不填写任何属性?

我知道有一个无方法可以跳过一个字段,但使用这意味着我必须不断添加到它,而我宁愿从一个空对象开始,如果测试需要它就添加到它。

最佳答案

有很多方法可以做到这一点。

您可以将其作为一次性操作进行:

var fi = fixture.Build<FilterItems>().OmitAutoProperties().Create();

您还可以自定义 fixture始终省略特定类型的自动属性的实例:
fixture.Customize<FilterItems>(c => c.OmitAutoProperties());

或者您可以完全关闭自动属性:
fixture.OmitAutoProperties = true;

如果您正在使用单元测试 Glue 库之一,例如 AutoFixture.Xunit2 ,您也可以声明性地执行此操作:
[AutoData]
public void MyTest([NoAutoProperties]FilterItems fi)
{
    // Use fi here...
}

关于unit-testing - 如何使用 AutoFixture 创建对象但不填写任何属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38565445/

相关文章:

asp.net-mvc - 最小起订量异常 : Verifying a method call that takes parameters

c# - 使用 GreedyConstructorQuery 和 AutoMoqCustomization 确实使用最贪婪的构造函数并注入(inject)依赖项

c# - 使用 AutoFixture 自定义创建具有复杂依赖关系的类型

c# - XUnit、AutoFixture 和 Moq 最佳实践

python - 使用 tempfile 写入一个 csv 临时文件

unit-testing - TDD 中驱动程序和 stub 之间的区别

python - 更改 my.cnf 文件中的 innodb_page_size 不会重新启动 mysql 数据库

unit-testing - .NET 核心使用 Xunit + Autofixture + Moq 编写更好的单元测试

c# - 找不到 Autofixture 循环引用

java - hamcrest - 比较集合中的项目