2010-03-01 13 views
8

tengo un método denominado RenderContent que devuelve object[]
En mi unidad de prueba, tengo que afirmar que esta matriz no contiene objetos de tipo VerifyRequestNUnit: ¿Cuál es la forma más concisa de afirmar si un IEnumerable contiene un objeto de cierto tipo?

Por el momento, estoy usando el siguiente Assert declaración. ¿Hay algo más conciso?

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

Prefiero usar una sintaxis fluida. Tenga en cuenta también que RenderContent devuelve object[], no IQueryable<object>.

Respuesta

14

Si está utilizando NUnit 2.5, se puede usar algo como:

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

Pero no estoy seguro de si otros frameworks de pruebas unitarias apoyan esta aserción de estilo.

1

Se podría acortar un poco utilizando el método Assert.AreEqual lugar:

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

Sí, pero no tiene NUnit un sistema incorporado en la sintaxis de ayudante para esto? – goofballLogic

12

Aunque no sé la sintaxis exacta para NUnit es falsa la afirmación, la mejor opción para este tipo de prueba es la Any método de extensión:

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

podría ser tentador para utilizar el método Count, pero Any es más eficiente, ya que se rompen en la primera ocurrencia.

1

Prefiero el enfoque Assert.AreEqual; NUNit usa Assert.That para los objetos internos Assert, STringAssert, etc. Me gusta simplemente hacer Assert.AreEqual (0, domain.RenderContent(). OfType(). Count()); para verificar los conteos.

De esta forma, comprueba directamente que ningún objeto de un tipo tiene ningún número de registros, pero hasta cierto punto las variaciones que ve son de preferencia y todas son igualmente válidas. Tienes que elegir lo que te gusta para tu estilo de desarrollo.

2

El Cualquier método de extensión, que se puede dar una expresión lambda:

Assert.IsFalse(domain.RenderContent().Any(i => i is VerifyRequest)); 
Cuestiones relacionadas