我正在尝试为输出取决于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'之前生成一个“error:expected specifier-qualifier-list”。错误。

有什么想法?我是ObjC的新手,因此非常感谢任何其他相关提示。

感谢。

有帮助吗?

解决方案

实际上,这是编译器错误,而不是OCMock错误。 这与 OCMOCK_VALUE(t)宏的工作方式有关。它被定义为:

#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(typeof(variable))]

typeof()指令不是C89的一部分,因此请确保已将编译器设置为使用 - std = gnu89 std = gnu99 标志。根据Apple文档,如果你将它设置为 Compiler Default ,这相当于gnu89,这也没关系。

这可能是导致错误的原因。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top