NUnit: Was ist der kürzeste Weg zu behaupten, ob ein IEnumerable ein Objekt eines bestimmten Typs enthält?

8

Ich habe eine Methode namens RenderContent , die object[]
zurückgibt In meinem Komponententest muss ich feststellen, dass dieses Array keine Objekte vom Typ VerifyRequest

enthält

Im Moment verwende ich die folgende Assert -Anweisung. Gibt es etwas Konkreteres?

%Vor%

Ich bevorzuge eine fließende Syntax. Beachten Sie auch, dass RenderContent object[] zurückgibt, nicht IQueryable<object> .

    
goofballLogic 01.03.2010, 13:38
quelle

5 Antworten

14

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

verwenden %Vor%

Aber ich bin mir nicht sicher, ob andere Unit-Test-Frameworks diesen Assert-Stil unterstützen.

    
Marco Spatz 01.03.2010, 13:54
quelle
12

Obwohl ich die genaue NUnit-Syntax für die IsFalse-Assertion nicht kenne, ist die Any -Erweiterungsmethode die beste Methode für diese Art von Test:

%Vor%

Es mag verlockend sein, die Methode Count zu verwenden, aber Any ist effizienter, da sie beim ersten Auftreten bricht.

    
Mark Seemann 01.03.2010 13:48
quelle
2

Die Any-Erweiterungsmethode, die einen Lambda-Ausdruck erhalten kann:

%Vor%     
Kristof Verbiest 01.03.2010 15:09
quelle
1

Sie können es mit der Assert.AreEqual-Methode stattdessen um ein Bit verkürzen:

%Vor%     
David Morton 01.03.2010 13:41
quelle
1

Ich bevorzuge den 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 prüft es direkt, dass keine Objekte eines Typs eine beliebige Anzahl von Datensätzen haben, aber bis zu einem Punkt sind die Abweichungen, die Sie sehen, Vorlieben und sie sind alle gleichermaßen gültig. Sie müssen wählen, was Sie für Ihre Art der Entwicklung mögen.

    
Brian Mains 01.03.2010 15:04
quelle

Tags und Links