是否可以使用AutoFixture CreateMany创建交替的bool值?

Tom*_*Tom 2 .net autofixture

我正在尝试创建一个在数据中有一些差异的对象列表.诸如字符串之类的类型很好,因为它们每次都是随机的,但是我发现bool在CreateMany()生成的集合中的每个对象中始终是相同的值.

示例类,用于演示:

public class FooBar
{
    public string Name { get; set; }
    public bool IsFoo { get; set; }
    public bool IsBar { get; set; }        
}

var fooBars = new Fixture().Build<FooBar>().CreateMany(5).ToList();

// Result
fooBars[0].IsFoo; // true
fooBars[1].IsFoo; // true
fooBars[2].IsFoo; // true
...
Run Code Online (Sandbox Code Playgroud)

可以实现以下目标吗?

// Wanted result
fooBars[0].IsFoo; // true
fooBars[1].IsFoo; // false
fooBars[2].IsFoo; // true
fooBars[3].IsFoo; // false
...
Run Code Online (Sandbox Code Playgroud)

干杯!

Mar*_*ann 5

AutoFixture 确实给你交替的布尔值,但你在这里遇到的是共振效应,因为你也拥有IsBar属性; 对于的每个实例FooBar创建,AutoFixture会之间交替truefalse,并因此始终设置IsFootrueIsBarfalse.

确定性交替可能不是这种情况的最佳选择.随机化布尔值可能会更好.一种方法是这样的:

var r = new Random();
fixture.Register<bool>(() => r.NextDouble() < 0.5);
Run Code Online (Sandbox Code Playgroud)