Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CreateMany()的AutoFixture IEnumerable行为_C#_Autofixture - Fatal编程技术网

C# CreateMany()的AutoFixture IEnumerable行为

C# CreateMany()的AutoFixture IEnumerable行为,c#,autofixture,C#,Autofixture,在阅读本文时,我似乎应该能够使用CreateMany创建几个对象,使用foreach对它们进行迭代,然后将它们作为数组返回 我看到的是,每次迭代似乎都会创建新的对象。这是预期的行为吗 要创建的实体: 示例Program.cs: 我创建了一个问题,如果这是预期的行为,它可能会被删除 编辑2011-06-02 要获得我期望的行为,并且如果我不想修改AutoFixture行为,我可以使用扩展方法: var fixture = new Fixture(); TestEntity[] testEntiti

在阅读本文时,我似乎应该能够使用CreateMany创建几个对象,使用foreach对它们进行迭代,然后将它们作为数组返回

我看到的是,每次迭代似乎都会创建新的对象。这是预期的行为吗

要创建的实体:

示例Program.cs:

我创建了一个问题,如果这是预期的行为,它可能会被删除

编辑2011-06-02

要获得我期望的行为,并且如果我不想修改AutoFixture行为,我可以使用扩展方法:

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

这确实是预期的默认行为。这有很多原因,但基本上可以归结为,当你要求一个IEnumerable AutoFixture时,实际上会竭尽全力确保你只得到你想要的东西

这对许多人来说是令人惊讶的行为。好消息是你可以改变它

fixture.Customizations.Add(new StableFiniteSequenceRelay());
这将改变行为,以便随后所有序列都是稳定的。您可以将该方法调用打包到一个。这看起来像是完全可选的:

public class StableFiniteSequenceCustomization : ICustomization
{
    public void Customize(IFixture fixture)
    {
        fixture.Customizations.Add(new StableFiniteSequenceRelay());
    }
}

再一次非常好的帮助!我已经接受了答案,但如果你能详细阐述一下你所说的AutoFixture是什么意思,那么它将是++,它实际上会竭尽全力确保你只得到你想要的东西?也就是说,我可能需要一些关于我的要求的教育深刻的解释需要一个完整的博客文章,它将看到未来的光明。简而言之,IEnumerable的“契约”只指定了一个迭代器。它与列表不同。不稳定的迭代器甚至生成器也适合这个界面。是的,收益率是实现的一部分:结果我已经写了那篇博文,然后忘记了:更新到上面的链接:
fixture.Customizations.Add(new StableFiniteSequenceRelay());
public class StableFiniteSequenceCustomization : ICustomization
{
    public void Customize(IFixture fixture)
    {
        fixture.Customizations.Add(new StableFiniteSequenceRelay());
    }
}