2010-03-01 11 views
8

mam metodę o nazwie renderContent która zwraca object[]
W moim badanej jednostki, muszę stwierdzić, że ta tablica nie zawiera żadnych obiektów typu VerifyRequestNUnit: Jaki jest najbardziej zwięzły sposób potwierdzenia, czy IEnumerable zawiera obiekt określonego typu?

Obecnie używam następujących Assert komunikat. Czy jest coś bardziej zwięzłego?

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

Wolę używać płynnej składni. Zauważ także, że RenderContent zwraca object[], a nie IQueryable<object>.

Odpowiedz

14

Jeśli używasz NUnit 2.5, można użyć coś takiego:

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

Ale nie jestem pewien, czy inne ramy testowe urządzenie obsługuje tego wymuszenia stylu.

1

Można go skrócić odrobinę za pomocą metody Assert.AreEqual zamiast:

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

Tak, ale nie NUnit mają wbudowany w składni pomocniczych do tego? – goofballLogic

12

Chociaż nie wiem dokładnie NUnit składnię IsFalse twierdzenie, najlepiej nadają się do tego rodzaju badań jest Any metodę rozszerzenia:

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

to może być kuszące, aby użyć metody Count, ale Any jest bardziej efektywne, ponieważ będzie przerwa na pierwszym wystąpieniu.

1

Preferuję podejście Assert.AreEqual; NUNit używa Assert.That dla wewnętrznych obiektów Assert, STringAssert itp. Lubię po prostu robić Assert.AreEqual (0, domain.RenderContent(). OfType(). Count()); sprawdzić liczbę.

W ten sposób sprawdza bezpośrednio, czy żadne obiekty typu nie mają żadnej liczby rekordów, ale do punktu, w którym widoczne są zmiany, a wszystkie są jednakowo ważne. Musisz wybrać to, co lubisz w swoim stylu rozwoju.

2

dowolnej metodę rozszerzenia, które mogą być podane wyrażenie lambda:

Assert.IsFalse(domain.RenderContent().Any(i => i is VerifyRequest)); 
Powiązane problemy