2010-03-01 2 views
8

Ich habe eine Methode namens RenderContent die object[]
In meiner Einheit Test ist, muss ich behaupten, dass dieses Array keine Objekte vom Typ VerifyRequestNUnit: Was ist der prägnanteste Weg zu behaupten, ob ein IEnumerable ein Objekt eines bestimmten Typs enthält?

Im Moment enthält, verwende ich die folgende Assert Erklärung. Gibt es etwas Konkreteres?

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

Ich ziehe es fließend Syntax zu verwenden. Beachten Sie auch, dass RenderContentobject[] zurückgibt, nicht IQueryable<object>.

Antwort

14

Wenn Sie NUnit verwenden 2.5, könnten Sie so etwas wie verwenden:

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

Aber ich bin nicht sicher, ob andere Unit-Test-Frameworks unterstützen diese Assertion-Stil.

1

Man könnte es mit Hilfe der Assert.AreEqual Methode stattdessen ein bisschen verkürzen:

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

Ja, aber nicht NUnit eine in der Syntax-Helfer für diese gebaut haben? – goofballLogic

12

Obwohl ich weiß nicht, die genaue NUnit Syntax für IsFalse Behauptung, die beste Lösung für diese Art von Test ist die Any Erweiterungsmethode:

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

es mag verlockend sein, die Count Methode zu verwenden, aber Any ist effizienter, da es auf dem ersten Auftreten brechen.

1

Ich bevorzuge die Assert.AreEqual Ansatz; NUNit verwendet Assert.That für die internen Objekte Assert, STRingAssert usw. Ich mag nur Assert.AreEqual (0, domain.RenderContent(). OfType(). Count()); um nach den Zählungen zu suchen.

Auf diese Weise überprüft es direkt, dass keine Objekte eines Typs eine beliebige Anzahl von Datensätzen haben, aber bis zu einem Punkt sind die Variationen, die Sie sehen, Präferenz und sie alle sind gleichermaßen gültig. Sie müssen wählen, was Sie für Ihren Entwicklungsstil mögen.

2

Die Jede Erweiterung Methode, die eine Lambda-Ausdruck gegeben werden kann:

Assert.IsFalse(domain.RenderContent().Any(i => i is VerifyRequest)); 
Verwandte Themen