¿Cómo prueba la unidad de aplicaciones asincrónicas de iOS?

Parece que esto puede ser similar a lo que has probado, es un poco hacky, pero parece funcionar bien.

El cuerpo del método SenTestCase, a continuación, utiliza un indicador que cambia a verdadero una vez que se cargan los datos. Un ciclo while mantiene el proceso esperando en el ciclo de ejecución actual hasta que la bandera se voltea. En su caso, parece que desea bloquear el método de configuración en sí.

– (nulo) testSendAppEvent
{

cargado = NO;
[appLogger logAppEvent: @ “UnitTestEvent” withDesc: @ “Descripción del evento” withHandler: self withUserId: @ “1”];
NSRunLoop * theRL = [NSRunLoop currentRunLoop];
while (! loaded && [theRL runMode: NSDefaultRunLoopMode beforeDate: [NSDate distantFuture]]);
NSString * checkResponse = [[NSString alloc] initWithData: loadedData codificación: NSASCIIStringEncoding];

El método logAppEvent envía el mensaje didReceiveData al objeto pasado a withHandler, en este caso self, la instancia de SenTestCase. Voltea la bandera cargada a verdadero:

– (vacío) conexión: (NSURLConnection *) conexión didReceiveData: (NSData *) datos
{
cargado = SÍ;
loadedData = datos;
}

Lo hago de esta manera:
– Configurar los objetos en juego
– Realizar el método bajo prueba
– Agregue esta línea de código:

[[NSRunLoop currentRunLoop] runUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.5]];

– verifique que se hayan cumplido las condiciones de prueba

Las pruebas asincrónicas en Kiwi son increíblemente simples. Comencé a usar Kiwi recientemente y es más fácil de usar que SenTest.

kiwi

More Interesting

¿Los TOS de Apple impiden las pruebas A / B de las aplicaciones de iPhone?

¿Cuál es la mejor manera de desarrollar aplicaciones para iOS y Android?

¿Qué dispositivo de seguimiento de actividad está disponible para comprar hoy que alimenta la mayor cantidad de puntos de datos únicos en la aplicación de salud de Apple?

Quiero desarrollar una aplicación multiplataforma (iOS, Android, web). ¿Qué necesito aprender para desarrollar el backend?

Si el iOS del iPhone no está emparejado con el propio procesador de aplicaciones de Apple, ¿cuánta degradación del rendimiento deberíamos ver?

A partir de cero, ¿qué tecnologías necesitaré para aprender a diseñar / desarrollar y administrar una aplicación IOS que interactúe con un servidor web (Linux o similar con Java, php y / o rails) con una base de datos MySQL?

¿Cuál es el mejor software profesional de recuperación de datos de iPhone?

Cómo aprender el desarrollo de iOS con el desarrollo de Android

¿Qué es lo más difícil en el desarrollo de una aplicación para iOS?

Quiero crear un widget simple del Centro de notificaciones de iOS usando Swift. ¿Es esto difícil?

¿Hay navegadores de iPhone alternativos que Safari? ¿Habrá alguna vez? ¿Qué pasa con los iPhone con jailbreak?

¿Utiliza CI Jenkins para el desarrollo de aplicaciones iOS? ¿Qué es y qué tan importante es?

¿Qué piensan los desarrolladores y empresarios de aplicaciones sobre el nuevo programa de televisión de Apple, Planet of the Apps?

¿Cuáles son los conceptos de programación de iOS que todo desarrollador de iOS debe saber?

¿Cuál es un buen presupuesto para comercializar un juego móvil?