2014-04-04 23 views
2

我想存根UIButton選定的屬性。吸氣劑定義爲:OCMock存根isSelected屬性

@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部分,但不知道發生了什麼

是否有可能殘留此typ吸氣劑?

+0

對於這種特殊情況,使用真實的UIButton並正常設置選定的屬性會更好嗎? – e1985

回答

4

這很討厭。問題是傳遞TRUEOCMOCK_VALUE導致創建一個integer類型的值。你得到的消息是OCMock的說法,你想存根的方法/屬性是一個布爾值,但是你提供了一個整數。

可以強制實際布爾值的創建與下列任一:

[[[button stub] andReturnValue:OCMOCK_VALUE((BOOL){TRUE})] isSelected]; 

[[[button stub] andReturnValue:@YES] isSelected]; 

順便說一句,用不同的號碼類型出現了類似的問題,但不幸的是OCMock固定這不是小事。看到這裏例如:https://github.com/erikdoe/ocmock/pull/58

+0

順便說一句,最近更改OCMock(https://github.com/erikdoe/ocmock/pull/115)這個問題不應該再發生。 –

0

這並不回答我的問題,但是爲了避免其他人絆倒這個問題,解決方法是對UIButton的實際實例進行部分模擬。

UIButton *button = [[UIButton alloc] init]; 
button.selected = TRUE; 
id mockButton = [OCMockObject partialMockForObject:button];