SenTest, Objective-C, категория странности - PullRequest
0 голосов
/ 21 апреля 2011

У меня есть класс SenTest, который я пытаюсь написать, который использует категорию для переопределения метода в классе контроллера.Я хочу, чтобы мой класс контроллера-макета вызывал метод в классе SenTest, чтобы определить, как вести себя в различных тестах.

Например:

  1. Установить переменную в методе testFoo.
  2. В testFoo вызовите переопределенный метод моего ложного контроллера.
  3. Пусть он перезвонит в синглтон SenTest, чтобы выяснить, как себя вести для testFoo.

Этовозможно или я идиот?

1 Ответ

0 голосов
/ 22 апреля 2011

Оказывается, хитрость заключается в том, чтобы сделать связанную ссылку в коде категории, а не в случае SenTest.

Так, например, объявить это в категории:

 -(void)fakeMethodToSetTestData:(NSDictionary *)data;

И в этом методе установите ассоциативную ссылку для хранения ваших данных, «связанных» с «собой».

Назовите это в вашем тестовом примере на вашем объекте, передав ваши данные.

Тогда в вашем тестовом случае назовите:

-(void)realMethodInCategoryWhichIsBeingOverridden;

И в вашей категории реализации этого метода извлекайте данные из ассоциативной ссылки, заданной вами в первом методе.

Это позволит вам установить тестовые данные на контроллере, чтобы вы могли захватить цепочку делегирования, например, чтобы предотвратить переход второго метода в сеть и возврат ваших тестовых данных в код вашего контроллера.

...