2015-12-10 3 views
1

У меня есть класс Utility с некоторыми методами класса.OCMock метод класса stub для всех вызовов

@interface DataValidator : NSObject 

+ (BOOL)foo; 

@end 

Использование класса внутри других классов, скажем NetworkManager, DBHandler и т.д. А так как нет методов, например, в классе Utility, нет необходимости для любого класса для создания экземпляра класса Utility. Скорее всего, они непосредственно делают звонки, как этот

[Utility foo]; 

При написании тестов для NetworkManager/DBHandler, можно издеваться утилиты и заглушки foo так что все звонки на него вернуть высмеивал ответ.

Если я издеваюсь над классом Utility в тестах класса NetworkManager, то код NetworkManager по-прежнему вызывает оригинальный метод вместо обрезанного.

Это работает только в том случае, если я непосредственно вызываю [Utility foo] изнутри тестов, но это не полезно в моем случае.

ответ

1

Похоже OCMock 3 имеет способ издеваться методы Класс: http://ocmock.org/reference/#mocking-class-methods Пример из этой страницы:

id classMock = OCMClassMock([SomeClass class]); 
OCMStub([classMock aClassMethod]).andReturn(@"Test string"); 
// result is @"Test string" 
NSString *result = [SomeClass aClassMethod]; 
0

Я не смог этого добиться. То, что я закончил, - это преобразовать методы класса в методы экземпляра, а затем издеваться над ними.

Смежные вопросы