2014-12-09 4 views
1

Основываясь на документации OCMock, должно быть возможно проверить методы класса, но я могу не понимать, что такое и не возможно с OCMock. Рассмотрим следующий пример метода я желаю тест:Методы тестирования класса тестирования с OCMock

- (void)methodToTest { 
    [SVProgressHUD dismiss]; 
} 

Я хотел бы, чтобы проверить, что dismiss вызывается SVProgressHUD. В настоящее время я использую следующий тест, но это не похоже на трюк.

- (void)testMethodToTest { 
    // Create Mock Progress HUD 
    id mockProgressHUD = OCMClassMock([SVProgressHUD class]); 

    // Configure Mock Progress HUD 
    OCMStub(ClassMethod([mockProgressHUD dismiss])); 

    // Invoke Method to Test 
    [object methodToTest]; 

    OCMVerify([mockProgressHUD dismiss]); 
} 

Можно ли с OCMock проверить, является ли dismiss вызывается SVProgressHUD?

ответ

0

Ваш тест проходит для меня. Возможно, это что-то тонкое в вашей реализации? Что такое object? Вот моя упрощенная версия:

@interface Foo : NSObject 
+ (void)dismiss; 
@end 

@implementation Foo 
+ (void)dismiss 
{ 
    NSLog(@"Dismiss!"); 
} 
@end 

@interface Bar : NSObject 
- (void)methodToTest; 
@end 

@implementation Bar 
- (void)methodToTest 
{ 
    [Foo dismiss]; 
} 
@end 

- (void)testClassMock 
{ 
    Bar *bar = [Bar new]; 

    id mockFoo = OCMClassMock([Foo class]); 
    OCMStub(ClassMethod([mockFoo dismiss])); 

    [bar methodToTest]; 

    OCMVerify([mockFoo dismiss]); 
} 
+0

«объект» является частично издеваемым объектом, но это не должно влиять на тест. Если я добавляю точку останова в тестируемом методе, '' '' '' 'вызывается 'на SVProgressHUD', OCMock по какой-то причине не выбирает это. –

+0

Можете ли вы добавить, как вы создаете «объект» на вопрос? В SVProgressHUD нет ничего странного - это должно позволить макет. –

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