2013-04-10 2 views
2

Я новичок в OCMock, и я пытаюсь проверить, вызван ли метод, кроме того, что я хочу, чтобы этот метод был заглушкой, поскольку он содержит другие методы загрузки, которые я не хочу тестировать в текущем тесте.Как правильно проверить этот метод с помощью OCMock?

- (void)setUp 
{ 
    self.rootViewController = [[RootViewController alloc] init]; 
} 

- (void)tearDown 
{ 
    self.rootViewController = nil; 
} 

- (void)test_ViewDidLoad_DidCallLoadChildViewControllers 
{ 
    id mockRootViewController = [OCMockObject partialMockForObject:self.rootViewController]; 

    [(RootViewController*)[mockRootViewController stub] loadChildViewControllers]; 
    [(RootViewController*)[mockRootViewController stub] updateMainNavigation]; 

    [[mockRootViewController expect] loadChildViewControllers]; 

    // Force the view to load 
    self.rootViewController.view; 

    [mockRootViewController verify]; 
} 

А вот метод, который вызывался:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self loadChildViewControllers]; 
    [self updateMainNavigation]; 
} 

По какой-то причине тест неисправного, как будто он никогда не вызывается (пока я могу уйти через него и убедиться, что он получает называется, так же как это является заглушкой

Здесь ошибка:.

OCPartialMockObject[RootViewController]: expected method was not invoked: loadChildViewControllers 

Что я СУИ петь?

ответ

2

Попробуйте удалить эту строку:

[(RootViewController*)[mockRootViewController stub] loadChildViewControllers]; 

Когда вы expect этот метод, он имеет побочный эффект гася его, так что stub ненужно. Я подозреваю, что происходит то, что ваш регистратор stub проглотил вызов до того, как у регистратора expect есть возможность его сопоставить.

+0

Это было! Еще раз спасибо за объяснение. –

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