2010-03-01 25 views
8

我有一個名爲RenderContent返回object[]
在我的單元測試方法,我需要斷言,此陣列不包含類型VerifyRequestNUnit:斷言IEnumerable是否包含某種類型的對象的最簡潔方法是什麼?

的任何物體。在那一刻,我使用以下Assert聲明。有什麼更簡潔的?

Assert.That(
    domain.RenderContent().OfType<VerifyRequest>().Count(), 
    Is.EqualTo(0) 
); 

我更喜歡使用流利的語法。還要注意RenderContent返回object[],而不是IQueryable<object>

回答

14

如果您使用NUnit的2.5,你可以使用類似:

Assert.That(domain.RenderContent(), Has.None.InstanceOf<VerifyRequest>()); 

但我不知道是否有其他的單元測試框架支持這種斷言式。

1

你可以通過使用Assert.AreEqual方法,而不是縮短一點點:

Assert.AreEqual(domain.RenderContent().OfType<VerifyRequest>().Count(), 0); 
+0

呀,但不NUnit的有語法輔助內置了呢? – goofballLogic 2010-03-01 13:46:58

12

雖然我不知道IsFalse斷言確切NUnit的語法,對於這種測試的最適合的是Any擴展方法:

Assert.IsFalse(domain.RenderContent().OfType<VerifyRequest>().Any()); 

這可能是很有誘惑力的使用Count方法,但Any更有效,因爲它會在第一次出現中斷。

1

我更喜歡Assert.AreEqual方法; NUNit使用Assert.That作爲內部Assert,STringAssert等對象。我喜歡只做Assert.AreEqual(0,domain.RenderContent()。OfType()。Count());檢查計數。

這樣,它直接檢查沒有任何類型的對象具有任何數量的記錄,但是對於您看到的變體是偏好,它們都是同等有效的。你必須選擇你喜歡的發展風格。

2

的任何擴展方法,它可以給出一個lambda表達式:

Assert.IsFalse(domain.RenderContent().Any(i => i is VerifyRequest)); 
相關問題