使用AutoFixture C#创建具有特定值的列表定值、列表、AutoFixture

2023-09-03 12:17:42 作者:断了联系

模型具有IdCode等属性。

我要创建4个具有特定不同代码的数据。

 var data = _fixture.Build<MyModel>()
                .With(f => f.Code, "A")
                .CreateMany(4);
AutoWallpaper首页 文档和下载 墙纸自动更换工具 OSCHINA 中文开源技术交流社区

这将导致所有4个数据的代码为A&Quot;。我希望这4个数据具有代码A&q;、B&q;、C&q;、D&q;

提前谢谢

推荐答案

假设您只需要4个项目,您可以定义代码集合,并使用它通过LINQ生成4个模型。

public static object[][] Codes =
{
    new object[] { new[] { "A", "B", "C", "D" } }
};

[Theory]
[MemberAutoData(nameof(Codes))]
public void Foo(string[] codes, Fixture fixture)
{
    var builder = fixture.Build<MyModel>(); // Do any other customizations here
    var models = codes.Select(x => builder.With(x => x.Code, x).Create());

    var acutal = models.Select(x => x.Code).ToArray();

    Assert.Equal(codes, acutal);
}

public class MyModel
{
    public int Id { get; set; }
    public string Code { get; set; }
}