iphone - OCMock 返回值

标签 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.");

这会产生一个“错误:‘typeof’错误之前的预期说明符限定符列表”。

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

谢谢。

最佳答案

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

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

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

这可能是您出错的原因。

关于iphone - OCMock 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1613405/

相关文章:

iphone - 将现有核心数据存储从一个 iPhone 应用程序重复使用到另一个 iPhone 应用程序

objective-c - 我如何在 OCMock 中模拟接受句柄作为参数的方法?

iphone - 是否有任何可用于 Objective-C 的测试 spy 库?

iphone - `NSInvocation`是什么?什么时候使用它?

ios - 在 ViewController 上显示 SVProgressHUD?

iphone - 使用 UIViewController 与单独的数据源对象来管理模型对象?

ios - 添加屏幕的 subview 中心

ios - TouchID登录成功后加载另一个View

ios - MKAnnotationView 无法正常工作