문제

출력이 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와 동일하며 괜찮습니다.

이것은 아마도 당신의 오류의 원인 일 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top