我试图做的事:为什么我不能直接将int或bool传递给OCMock的“andReturnValue”参数?
[[[mockQuestion stub] andReturnValue:YES] shouldNegate];
[[[mockQuestion stub] andReturnValue:123] randomNumberWithLimit];
但是,这给了我这个警告/错误“不兼容的整数指针转换发送‘BOOL’(又名‘符号字符’)类型为‘NSValue *’的参数”
我能想出要解决的唯一办法就是要做到:
BOOL boolValue = YES;
int num = 123;
[[[mockQuestion stub] andReturnValue:OCMOCK_VALUE(boolValue)] shouldNegate];
[[[mockQuestion stub] andReturnValue:OCMOCK_VALUE(num)] randomNumberWithLimit];
但是,这使我的测试代码显得如此过于冗长。是有办法做这一切在线,而不必设置变量?
谢谢,这应该在我的测试中删除相当数量的样板文件! – 2012-08-20 19:54:55
也不知道这个语法。这是新的吗?我会相应地更新OCMock文档。 – 2012-08-23 15:31:01
@ErikDoernenburg:它们被称为“复合文字”,它们在C99中引入。所以他们已经存在了十多年,虽然由于某种原因他们并不是很出名。 – 2012-08-23 19:17:59