2014-06-09 1 views
1

데이터에 약간의 차이가있는 개체의 목록을 만들려고합니다. 문자열 등 기타와 같은 형식은 매번 무작위이므로 괜찮습니다. 그러나 bool은 항상 CreateMany()에 의해 생성 된 컬렉션 내의 각 개체에서 동일한 값을가집니다. 시연을 위해AutoFixture CreateMany를 사용하여 교대로 bool 값을 생성 할 수 있습니까?

예 클래스 :

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에서 true으로, IsBar에서 false으로 설정하십시오.

확정적 인 변경이이 시나리오에 가장 적합하지는 않습니다. 부울 값을 무작위로 추출하는 것이 좋습니다. FOOBAR 세 부울의 다음 컬렉션의 각 인스턴스 사이의 부울 값 것 자연스럽게 대안이 있다면

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

것은 당신이 말하는 : 즉,이 같은 것 한 가지 방법? – Tom

관련 문제