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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top