我有一个跟随签名的方法;
- (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'.
有人可以帮忙吗?
答案 0 :(得分:9)
在64位设备上,NSInteger
被声明为long
,但您返回的值将被输入为int
。通过在数字后面添加l
来尝试将您的价值强制为长期:
[[[[YSNYI13NMockingTest mockedYI13N] expect] andReturnValue:@(12345l)] getFirstVisitTimeStamp];
答案 1 :(得分:3)
正如@michaels在评论中暗示的那样,在进一步搜索到您的错误消息之后,这似乎与OCMock中的an open bug有关。
似乎使用OCMOCK_VALUE(...)
可能会对您有用。