CreateMany只有1个元素包含特定值

时间:2015-03-26 03:26:22

标签: c# autofixture

这似乎是我阅读的每篇博文中缺少的内容。

我怎样才能CreateMany<T>集合中只有一个元素包含我指定的Id个?

我想将其重新定制为自定义。

我尝试了很多这样的变体:

public class OrdersCustomizations : ICustomization
{
    public void Customize(IFixture fixture)
    {
        var single = fixture.Build<Order>().With(x => x.Id, 10).Create();

        var many = fixture.Build<Order>().CreateMany().ToList();
        many.Add(single);

        fixture.RepeatCount = 5;
        fixture.AddManyTo<Order>(many);
    }
}

但我无法弄清楚这一点。

2 个答案:

答案 0 :(得分:1)

你为什么不这样做?

var many = fixture.Create<List<Order>>();
many[0].Id = 10;

// Rest of test goes here...

或者,如果您使用AutoFixture.Xunit的声明性方法,则可以执行此操作:

public void MyTest(List<Order> orders)
{
    orders[0].Id = 10;

    // Rest of test goes here...
}

答案 1 :(得分:0)

// Configure fixture
var expectedResult = _fixture.Create<List<Order>>();
expectedResult[0].Id = "159";
_fixture.Inject(expectedResult);

// Usage
var actualResult = _fixture.Create<List<Order>>();
Assert.True(actualResult[0].Id == expectedResult[0].Id);

这就是你要搜索的内容!