我试图这样做:
[[[mockQuestion stub] andReturnValue:YES] shouldNegate];
[[[mockQuestion stub] andReturnValue:123] randomNumberWithLimit];
但是这给了我这个警告/错误“不兼容的整数指针转换发送'BOOL'(又名'signed char')到'NSValue *'类型的参数”
我唯一可以解决的问题是:
BOOL boolValue = YES;
int num = 123;
[[[mockQuestion stub] andReturnValue:OCMOCK_VALUE(boolValue)] shouldNegate];
[[[mockQuestion stub] andReturnValue:OCMOCK_VALUE(num)] randomNumberWithLimit];
但这使得我的测试代码看起来过于冗长。有没有办法在不必设置变量的情况下全部内联?
答案 0 :(得分:3)
您可以使用看起来像(type){value}
的文字样式。这通常用于创建结构文字,但也适用于基本数据类型。这里的重要方面是这种类型的文字创造了一个可以解决的临时性。这意味着您可以像
[[[mockQuestion stub] andReturnValue:OCMOCK_VALUE((BOOL){YES})] shouldNegate];
[[[mockQuestion stub] andReturnValue:OCMOCK_VALUE((int){123})] randomNumberWithLimit];
答案 1 :(得分:0)
该参数应该是一个对象指针。在这种情况下,它应该指向NSValue类的对象。