blog.ploeh.dk/2011/04/18/EnumerablesaredynamicalsoinAutoFixture

росмотре постаВотпохоже, я должен быть в состоянии создать несколько объектов, используя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<TestEntity> testEntities = 
      fixture.Build<TestEntity>().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<TestEntity> 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<TestEntity>().CreateMany(5).ToArray();

Ответы на вопрос(0)

Ваш ответ на вопрос