1

我试图做:

[[[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];

但这让我的测试代码显得过于冗长。有没有办法在不需要设置变量的情况下内联完成这一切?

4

2 回答 2

3

您可以使用看起来像(type){value}. 这通常用于创建结构文字,但也适用于基本数据类型。这里的重要方面是这种类型的文字创建了一个可以处理的临时文件。这意味着您可以编写代码,例如

[[[mockQuestion stub] andReturnValue:OCMOCK_VALUE((BOOL){YES})] shouldNegate];
[[[mockQuestion stub] andReturnValue:OCMOCK_VALUE((int){123})] randomNumberWithLimit];
于 2012-08-16T23:11:28.033 回答
0

该参数应该是一个对象指针。在这种情况下,它应该指向 NSValue 类的一个对象。

于 2012-08-16T23:12:58.703 回答