Valores de retorno do OCMOCK
-
06-07-2019 - |
Pergunta
Estou tentando escrever um teste para um método em que a saída depende do valor de retorno do NSDATE TimeIntervalSincenow. Eu gostaria de especificar o valor de retorno nos meus testes para poder testar certos cenários.
Estou tendo muita dificuldade em conseguir esse objeto Ocmock retornar o que eu gostaria. Aqui está o meu código:
id mock = [OCMockObject mockForClass:[NSDate class]];
NSTimeInterval t = 20.0;
[[[mock stub] andReturnValue:OCMOCK_VALUE(t)] timeIntervalSinceNow];
STAssertEquals([mock timeIntervalSinceNow], 20.0, @"Should be eql.");
Isso gera um "erro: esperado especificador-qualificador-list antes do erro" TypeOf ".
Alguma ideia? Eu sou novo no OBJC, então quaisquer outras dicas relacionadas são muito apreciadas.
Obrigado.
Solução
Na verdade, é um erro do compilador, não um erro OCMOCK. Isso tem algo a ver com a maneira como o OCMOCK_VALUE(t)
Macro trabalha. É definido como:
#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(typeof(variable))]
A diretiva typeof () não faz parte do C89, portanto, certifique -se de definir seu compilador a usar -std=gnu89
ou std=gnu99
bandeira. De acordo com o Apple Docs, se você o definir como Compiler Default
Isso é equivalente ao GNU89, o que também é bom.
Esta é provavelmente a causa do seu erro.