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.");
这会生成一个“错误:在‘typeof’之前预期的说明符限定符列表”错误。
有什么想法吗?我是 ObjC 的新手,因此非常感谢任何其他相关提示。
谢谢。
I'm trying to write a test for a method where the output depends on an NSDate's timeIntervalSinceNow return value. I'd like to specify the return value in my tests so I can test certain scenarios.
I'm having a really hard time getting this OCMock object returning what I'd like. Here's my code:
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.");
This generates a "error: expected specifier-qualifier-list before 'typeof" error.
Any thoughts? I'm new to ObjC, so any other related tips are greatly appreciated.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
实际上,这是一个编译器错误,而不是 OCMock 错误。
这与 OCMOCK_VALUE(t) 宏的工作方式有关。它的定义为:
typeof() 指令不是 C89 的一部分,因此请确保您已将编译器设置为使用 -
std=gnu89
或std=gnu99
标志。根据Apple文档,如果将其设置为Compiler Default
,这相当于gnu89,这也很好。这可能是您的错误的原因。
Actually, it is a compiler error, not an OCMock error.
This has something to do with the way the
OCMOCK_VALUE(t)
macro works. It is defined as:The typeof() directive is not part of C89, so make sure you have set your compiler to use -
std=gnu89
orstd=gnu99
flag. According to the Apple docs, if you set it toCompiler Default
this is equivalent to gnu89, which is fine also.This is probably the cause of your error.