2014-06-09 59 views
1

我試圖創建一個對象的數據有一些差異的列表。諸如字符串等類型都很好,因爲它們每次都是隨機的,但是我發現bool在由CreateMany()生成的集合中的每個對象中始終是相同的值。是否可以使用AutoFixture 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 
... 

可以下面的實現?

// Wanted result 
fooBars[0].IsFoo; // true 
fooBars[1].IsFoo; // false 
fooBars[2].IsFoo; // true 
fooBars[3].IsFoo; // false 
... 

乾杯!

回答

4

AutoFixture 確實給你交布爾值,但你遇到這裏是一個共振效果,因爲你也有IsBar財產;對於創建的每個實例FooBar,AutoFixture將在truefalse之間交替,因此始終將IsFoo設置爲trueIsBarfalse

確定性交替可能不是最適合這種情況。它可能會更好地隨機布爾值。一種方法是這樣的:

var r = new Random(); 
fixture.Register<bool>(() => r.NextDouble() < 0.5); 
+0

你是說如果在FooBar上有三個布爾值,那麼bool值自然會在集合中的每個實例之間切換? – Tom

相關問題