c# - AutoFixture.AutoNSubstitute 不为接口中的属性自动生成数据
问题描述
我想使用 AutoFixture 自动生成测试数据,目前正在使用模拟框架 NSubstitute。但是,我无法为接口上的属性生成随机数据。我有以下测试用例设置:
public interface IFoo
{
Guid Id { get; set; }
string Value { get; set; }
}
[Fact]
public void TestCase()
{
var fixture = new Fixture().Customize(new AutoNSubstituteCustomization());
var foo = fixture.Create<IFoo>();
_output.WriteLine($"Id: '{foo.Id}'");
_output.WriteLine($"Value: '{foo.Value}'");
}
产生以下输出:
Id: '00000000-0000-0000-0000-000000000000'
Value: ''
创建一个具体的类会自动生成这些属性,而不是接口。让 AutoFixture 为接口生成数据需要什么?我假设原因是自定义部分中的设置不足,但不确定要在其中包含什么。
解决方案
这可以通过使用ConfigureMembers = true
自定义来解决。
[Fact]
public void TestCase()
{
var fixture = new Fixture().Customize(new AutoNSubstituteCustomization {ConfigureMembers = true});
var foo = fixture.Create<IFoo>();
_output.WriteLine($"Id: '{foo.Id}'");
_output.WriteLine($"Value: '{foo.Value}'");
}
推荐阅读
- vb6 - VB6如何在字段为空时从结果集中插入表
- mysql - 固定可用性计划的最佳结构是什么?
- android - Clang 配置文件引导优化是否适用于 Android 应用程序
- android - 在 Frestore 上删除之前,先在 recyclerView 上完成滑动以删除的动画
- google-sheets - 自动增加 COUNTIF 日期标准
- python - 如何在python中使用随机形成函数的恒定结果
- java - 以下代码如何使用三元运算符查找最多三个数字
- c# - 使用简单的破折号/幻灯片机制 C# Unity2d 进行编码
- c# - this.Close() 不会杀死观察者 NewThreadScheduler.Default.Schedule 创建的线程
- ios - 结构属性闭包在 Swift 中只运行一次