Ayudante global para especificaciones de Kiwi

He definido algunos bloques de ayuda dentro del bloque BEGIN_SPEC END_SPEC en mi file de especificaciones que reutilizo con bastante frecuencia. Por ejemplo, afirmar que aparece un cierto cuadro de dialog:

 void (^expectOkAlert) (NSString *, NSString *) = ^void(NSString *expectedTitle, NSString *expectedMessage) { UIAlertView *alertView = [UIAlertView mock]; [UIAlertView stub:@selector(alloc) andReturn:alertView]; [[alertView should] receive:@selector(initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:) andReturn:alertView withArguments:expectedTitle,expectedMessage,any(),@"OK",any()]; [[alertView should] receive:@selector(show)]; }; 

Me gustaría reutilizar este bloque sobre varios otros files de especificación. ¿De alguna manera es posible como lo hacemos normalmente con los ayudantes de especificaciones y rspec en el mundo de Ruby?

¿Cómo administras los ayudantes de especificaciones globales?

Usted puede

  • declare expectOkAlert como una variable global, en un encabezado común que se incluye en las otras testings de unidad

     extern void (^expectOkAlert) (NSString *, NSString *); 
  • o declarar expectOkAlert en una categoría KWSpec , aún necesitará un encabezado común que se incluya en las testings de unidad que necesita para usarlo

     @implementation KWSpec(Additions) + (void)expectOkAlertWithTitle:(NSString*)title andMessage:(NSString*)message; @end 

    y lo usas así:

     it(@"expects the alert", %{ [self expectOkAlertWithTitle:@"a title" andMessage:@"a message"]; }); 
  • o cree un emparejador personalizado y utilícelo para afirmar:

     @interface MyAlertMatcher: KWMatcher - (void)showOKAlertWithTitle:(NSString*)title andMessage:(NSString*)message; @end 

    y utilízalo en tus testings como esta:

     it(@"expects the alert", %{ [[UIAlertView should] showOkAlertWithTitle:@"a title" andMessage:@"a message"]; }); 

Todos los enfoques requieren que declare el ayudante en un encabezado disponible de testing de unidad de unidad, de lo contrario obtendrá advertencias / errores de compilation.