我試圖做的事:爲什麼我不能直接將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