2015-01-30 3 views
0

Я пытаюсь установить некоторый модульный тест в нашем огромном проекте. Проблема заключается в том, что некоторые ViewControllers когда называют частичным издеваться аварии с следующей трассировке:OCMock Partial mock только для класса потомков

error: -[EspionageViewControllerTests testFillEspionageTabInfo] : failed: caught "NSInternalInconsistencyException", "-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "EspionageViewController" nib but the view outlet was not set." 
    0 CoreFoundation      0x0000000111264f35 __exceptionPreprocess + 165 
     1 libobjc.A.dylib      0x0000000110efdbb7 objc_exception_throw + 45 
     2 CoreFoundation      0x0000000111264e6d +[NSException raise:format:] + 205 
     3 UIKit        0x000000010f68805f -[UIViewController _loadViewFromNibNamed:bundle:] + 441 
     4 UIKit        0x000000010f688588 -[UIViewController loadView] + 109 
     5 UIKit        0x000000010f6887f9 -[UIViewController loadViewIfRequired] + 75 
     6 UIKit        0x000000010f688c8e -[UIViewController view] + 27 
     7 AppName     0x000000010c07c388 -[IOViewController setTopBarView:] + 1144 

Как я понимаю, у меня были проблемы с setTopBarView, и особенно место, где я сделал следующее:

[viewElement setFrame:CGRectMake(viewElement.frame.origin.x, self.view.bounds.origin.y - viewElement.frame.size.height , viewElement.frame.size.width, viewElement.frame.size.height)]; 

Так самости .view вызывает этот сбой. Мой вопрос: как я могу избежать этой ситуации - особенно, когда мой EspionageViewController является подклассом другого ViewController, где задан setTopBarView. Мне нужно использовать OCMPartialMock для EspionageVC, так как в противном случае я не смогу проверить его методы, однако это суперкласс (и методы) должен быть полностью изделен, чтобы предотвратить эти сбои. Любая помощь будет оценена.

+0

Не думаю, что я понимаю, что вы просите. Частичные ложные объекты позволяют вам издеваться над методами в родительских классах. Было бы полезно, если бы вы поделились небольшим примером тестового кода, который вызывает сбой. –

ответ

1

Извините за поздний ответ на мой вопрос. Проблема оказывается довольно простой. Я дразнил ViewController следующим образом:

id mock = OCMPartialMock([MyViewController new]); 

Что, конечно, неправильно и журнала аварии было правильно, что с моей точки зрения торговых точек не были установлены (потому что я действительно не сработал мой файл XIb). Так что все, что мне нужно было сделать, это создать VC с назначенным инициализатором (следовательно, загрузить его xib):

id mock = OCMPartialMock([[MyViewController alloc] initWithNibName:NSStringFromSelector([MyViewController class]) bundle:nil]); 
Смежные вопросы