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();