2011-01-13 20 views
7

¿Alguien sabe de alguna biblioteca existente que permita probar el código asincrónico con OCUnit? Estoy pensando en algo como GHAsyncTestCase pero que ofrece desde SenTestCase.Prueba de código asíncrono en iOS con OCunit

Pregunto porque si no encuentro ninguno voy a portar GHAsyncTestCase a OCUnit pero no quiero duplicar el trabajo ya realizado por otra persona.

+0

No sé de nadie que haga esto antes, pero tengo que preguntar; ¿Por qué sientes la necesidad de probar el comportamiento asincrónico en un marco normalmente utilizado para ejecutar pruebas unitarias? ¿No confías en las dos mitades de tu comportamiento? ¿No puedes probarlos por separado? ¿Estás realmente escribiendo pruebas de integración? – Jonah

+0

@Jonah, tienes razón, es realmente útil, pero a veces soy demasiado flojo para burlarme de toda la capa de red. Entonces, es realmente tentador simplemente ejecutar un servidor local y pruebas de integración en su contra. –

Respuesta

11

Piotr:

Usted puede estar interesado en el trabajo que he hecho con Mimic, una red stubbing herramienta escrita en Ruby que le permite tropieza peticiones en un alto nivel y se puede utilizar desde su Objective-C usando la envoltura provista.

Con respecto a las pruebas asincrónicas, eche un vistazo a una pequeña utilidad que escribí llamada AssertEventually.

This example muestra tanto Mimic como assertEventually en acción.

Además, es posible que desee consultar Kiwi: es un gran marco de prueba de Objective-C construido sobre OCUnit. Recientemente he contribuido un parche para portar mi comportamiento AssertEventually a Kiwi, que le permite escribir cosas como:

id someObject = nil; 
[do SomethingThatFetchesSomeObjectAsynchronously]; 
[[theObject(&someObject) shouldEventually] equal:@"some result"]; 
+0

Es algo que estaba buscando. Mimic parece bastante interesante. Lo echaré un vistazo. ¡Gracias! –

+0

AssertEventually suena útil, pero el enlace está muerto. ¿Alguna ayuda? – AndrewCr

+0

Estoy usando Kiwi con el comportamiento '-shouldEventually'; para descubrir que fue su obra. ¡Gracias! –

7

AGAsyncTestHelper adopta un enfoque ligeramente diferente que AssertEventually ya que está evaluando la expresión en lugar de comprobar el puntero para los nuevos resultados. Una ventaja del uso de AGAsyncTestHelper es que se puede usar para bloques, delegados-devoluciones de llamada y otras cosas.

WAIT_WHILE(<expression_to_evaluate>, <max_duration>); 

Respondiendo a la pregunta

id someObject = nil; 
[self doSomethingThatFetchesSomeObjectAsynchronously]; 
WAIT_WHILE(self.someObject == nil, 1.0); 
Cuestiones relacionadas