문제
출력이 NSDate의 TimeIntervalSincenow return 값에 의존하는 방법에 대한 테스트를 작성하려고합니다. 특정 시나리오를 테스트 할 수 있도록 테스트에서 리턴 값을 지정하고 싶습니다.
나는이 Ocmock 객체가 내가 원하는 것을 반환하는 데 정말 힘들다. 내 코드는 다음과 같습니다.
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.");
이렇게하면 'Error :'typeof "오류 전에"Error : 예상 지정자-앨리어리스트 목록을 생성합니다.
이견있는 사람? 저는 OBJC를 처음 사용하므로 다른 관련 팁에 크게 감사드립니다.
감사.
해결책
실제로 Ocmock 오류가 아닌 컴파일러 오류입니다. 이것은 방식과 관련이 있습니다 OCMOCK_VALUE(t)
매크로가 작동합니다. 그것은 다음과 같이 정의됩니다.
#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(typeof(variable))]
유형 () 지침은 C89의 일부가 아니므로 컴파일러를 사용할 수 있도록 설정했는지 확인하십시오.std=gnu89
또는 std=gnu99
깃발. Apple Docs에 따르면 Compiler Default
이것은 GNU89와 동일하며 괜찮습니다.
이것은 아마도 당신의 오류의 원인 일 것입니다.
제휴하지 않습니다 StackOverflow