首页 > 解决方案 > 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 为接口生成数据需要什么?我假设原因是自定义部分中的设置不足,但不确定要在其中包含什么。

标签: c#nsubstituteautofixture

解决方案


这可以通过使用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}'");
}

推荐阅读