Dou*_*g P 4 iphone objective-c ocmock
我正在尝试为一个方法编写测试,其中输出取决于NSDate的timeIntervalSinceNow返回值.我想在我的测试中指定返回值,以便我可以测试某些场景.
我很难让这个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.");
Run Code Online (Sandbox Code Playgroud)
这会在'typeof'错误之前生成"错误:期望说明符 - 限定符 - 列表".
有什么想法吗?我是ObjC的新手,所以任何其他相关提示都非常感谢.
谢谢.
实际上,这是编译器错误,而不是OCMock错误.这与OCMOCK_VALUE(t)宏的工作方式有关.它被定义为:
#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(typeof(variable))]
Run Code Online (Sandbox Code Playgroud)
typeof()指令不是C89的一部分,因此请确保已将编译器设置为使用 - std=gnu89或std=gnu99标记.根据Apple文档,如果你设置它Compiler Default相当于gnu89,这也没关系.
这可能是导致错误的原因.