Невозможно заглушить метод "title", потому что такого метода не существует в ложном классе OCMock
Я пишу этот юнит-тест:
- (void)testCellValues
{
id bookMock = [OCMockObject mockForClass:[LBBook class]];
[[[bookMock stub] andReturn:@"Book Title"] title];
}
Конечно, после этого есть код. Но в этот момент у меня появляется эта ошибка при выполнении теста:
[LBReviewsDashboardDataSourceTest testCellValues] failed: OCMockObject[LBBook]: cannot stub or expect method 'title' because no such method exists in the mocked class.
Но LBBook
класс имеет атрибут title
, Это класс LBBook:
@interface LBBook : LBManagedObjectFactory
@property (nonatomic, retain) NSString * title;
@end
Я не могу понять, что здесь происходит, почему OCMock возвращает эту ошибку, если у класса есть заголовок attribute
?
Заранее спасибо.
1 ответ
Решение
CoreData использует динамические свойства. Они еще не поддерживаются должным образом в OCMock. Можно заглушки valueForKey:
вместо. См. Также: OCMock: заглушка @dynamic свойство и OCMock с проблемой динамических свойств Core Data