AutoFixture IEnumerable поведение с CreateMany ()

Глядя на сообщение здесь , похоже, что я смогу создать несколько объектов с помощью CreateMany () , перебирать они используют foreach , а затем возвращают их как массив.

Я вижу, что каждая итерация каждый раз создает новые объекты. Это ожидаемое поведение?

Объект для создания:

public class TestEntity
{
    public int Id { get; private set; }
    public string SomeString { get; set; }
    public void SetId(int value)
    {
        this.Id = value;
    }
}

Образец Program.cs:

private static int id;

static void Main(string[] args)
{
    var fixture = new Fixture();
    IEnumerable testEntities = 
      fixture.Build().CreateMany(5);

    Output(testEntities);

    foreach (var testEntity in testEntities)
    {
        testEntity.SetId(id++);
        Console.WriteLine(
          string.Format("CHANGED IN FOREACH:: hash: {0}, id: {1}, string: {2}", 
          testEntity.GetHashCode(), testEntity.Id, testEntity.SomeString));
    }

    Output(testEntities);
}

private static void Output(IEnumerable testEntities)
{
    foreach (var testEntity in testEntities)
    {
        Console.WriteLine(
          string.Format("hash: {0}, id: {1}, string: {2}", 
          testEntity.GetHashCode(), testEntity.Id, testEntity.SomeString));
    }
}

Я создал проблему здесь (которую, вероятно, можно удалить, если это ожидаемое поведение).

Изменить 2011-06-02

Чтобы получить ожидаемое мной поведение, и если я этого не сделаю, Если вы хотите изменить поведение AutoFixture, я могу использовать метод расширения:

var fixture = new Fixture();
TestEntity[] testEntities = fixture.Build().CreateMany(5).ToArray();

9
задан Community 23 May 2017 в 10:00
поделиться