OCMock期望和返回给出签名错误

时间:2014-06-03 21:42:42

标签: ios objective-c ocmock

我有一个跟随签名的方法;

- (NSInteger) getFirstVisitTimeStamp;

当我使用OCMock模拟并返回一个值时,测试失败并出现以下错误。

[[[[YSNYI13NMockingTest mockedYI13N] expect] andReturnValue:@(12345)] getFirstVisitTimeStamp];

错误:

file:///%3Cunknown%3E: test failure:
failed: Return value does not match method signature; signature declares 'q' but value is 'i'.

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:9)

在64位设备上,NSInteger被声明为long,但您返回的值将被输入为int。通过在数字后面添加l来尝试将您的价值强制为长期:

[[[[YSNYI13NMockingTest mockedYI13N] expect] andReturnValue:@(12345l)] getFirstVisitTimeStamp];

答案 1 :(得分:3)

正如@michaels在评论中暗示的那样,在进一步搜索到您的错误消息之后,这似乎与OCMock中的an open bug有关。

似乎使用OCMOCK_VALUE(...)可能会对您有用。