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
Aquí hay un artículo completo que explica cómo escribir exactamente el método OCMock isKindOfClass
(no existe de manera predeterminada) y cómo usarlo: http://blog.carbonfive.com/2009/02/17/custom-constraints-for- ocmock /