我正在尝试在UIButton
上存根所选属性。 getter定义为:
@property (nonatomic, getter=isSelected) BOOL selected;
我的存根看起来像这样:
[[[button stub] andReturnValue:OCMOCK_VALUE(TRUE)] isSelected];
运行测试时收到以下错误:
Return value does not match method signature; signature declares 'c' but value is 'i'.
我认为这与getter=isSelected
部分有关,但不确定发生了什么
是否可以存根此类吸气剂?
答案 0 :(得分:4)
这很烦人。问题是将TRUE
传递给OCMOCK_VALUE
会导致创建integer类型的值。你得到的消息是OCMock说你想要stub的方法/属性是一个布尔值,但你提供了一个整数。
您可以使用以下任一方法强制创建实际的布尔值:
[[[button stub] andReturnValue:OCMOCK_VALUE((BOOL){TRUE})] isSelected];
[[[button stub] andReturnValue:@YES] isSelected];
顺便说一句,类似的问题出现在不同的数字类型中,但不幸的是,在OCMock中解决这个问题并非易事。例如:https://github.com/erikdoe/ocmock/pull/58。
答案 1 :(得分:0)
这并没有回答我的问题,但是如果其他任何人遇到这个问题,则解决方法是对UIButton
的实际实例进行部分模拟。
UIButton *button = [[UIButton alloc] init];
button.selected = TRUE;
id mockButton = [OCMockObject partialMockForObject:button];