objective-c unit-testing mocking ocmock

objective c - ¿Cómo obtener el valor burlado al llamar isKindOfClass para un objeto OCMock?



objective-c unit-testing (2)

Si desea pasar el objeto OCMock a un método donde la función llama a KindOfClass, debe crear un simulacro parcial. El siguiente código puede ayudarte. Funcionó para mí

-(void)testMyTest { FirstViewController* masterVC = [[FirstViewController alloc]init]; SecondViewController *second = [[SecondViewController alloc] init]; id master = [OCMockObject partialMockForObject:second]; [[master expect] getName:@"PARAM"]; [masterVC doSomething:master]; [master verify]; [masterVC release]; [second release]; }

método doSomething dentro de FirstViewController

-(void)doSomething:(SecondViewController *)detail { if ([detail isKindOfClass:[SecondViewController class]]) { NSString * returnVal = [detail getName:@"PARAM"]; NSLog(@"returnVal %@",returnVal); } }

Una alternativa más es burlarse del método isKindOfClass, por lo que el caso de prueba se convertirá

- (void)testMyTest { CalculatorViewController* masterVC = [[CalculatorViewController alloc]init]; id master = [OCMockObject niceMockForClass:[SecondViewController class]]; BOOL ret = YES; [[[master expect] andReturnValue:OCMOCK_VALUE(ret)] isKindOfClass:[SecondViewController class]]; [[master expect] getName:@"PARAM"]; [masterVC doSomething:master]; [master verify]; }

Pasar un objeto OCMock a un método donde la función llama es KindOfClass. Sin embargo, para la prueba unitaria, el valor devuelto no es de la clase burlada sino OCMockObject