2013-07-22 52 views
3

在此測試中,我預計dummyVar爲空。但是,無論我設置了OmitAutoProperty,它都不是。空虛擬集合

這是正確的行爲,爲什麼?什麼是AutoFixture創建一個空虛擬集合的方式?

[Fact] 
public void ShouldBeEmpty() 
{ 
    var fixture = new Fixture(); 
    fixture.Customize(new AutoMoqCustomization()); 
    fixture.OmitAutoProperties = true; 
    var dummyVar = fixture.Create<IEnumerable<IComparable>>(); 
    Assert.Empty(dummyVar); 
} 

回答

5

這是by design in AutoFixture 3.0。但是,如果您希望枚舉數爲空,則可以使用you can configure that as well

如果要明確只有IEnumerable<IComparable>(而不是其他集合)是空的,更簡單的方法是做到這一點:

fixture.Inject<IEnumerable<IComparable>>(new IComparable[0]); 

OmitAutoProperties控制是否不反對性質(和字段)被填充或不。它不會影響收藏的大小。 (IEnumerable<T>沒有定義可寫的屬性。)

RepeatCount控制集合的大小,但the previously mentioned issue報告,你不能設置RepeatCount爲0(再設計)。

+0

感謝馬克,我真的很喜歡新的IComparable [0]的簡單性。 – cocogorilla

+0

@ mark-seemann我認爲你在關於AutoFixture 3.0的回覆wrt中鏈接到了錯誤的頁面,部分原因是因爲Wiki頁面上的該部分的錨點和對應鏈接都被破壞了。 AFAIK正確的鏈接是https://github.com/AutoFixture/AutoFixture/wiki/Version-History#various-collections-are-filled-by-default ...我也承諾更新維基頁面本身。 –