2014-02-05 2 views
9

Мы пытаемся создать единичный тест (с OCMock, хотя и открытым для других фреймворков), который высмеивает класс, который при загрузке класса имеет побочный эффект.iOS Mocking Class, который имеет побочные эффекты при загрузке класса

У нас есть класс отслеживания, который включает вызовы в другие библиотеки отслеживания, такие как Flurry.

Многие из этих других библиотек отслеживания (в частности, Flurry) выполняют код инициализации класса.

Тестирование модуля не выполняется, поскольку код не может выполняться в тестовой среде. В идеале мы хотели бы заменить класс Flurry макетом/заглушкой.

- (void) testConstruction { 
    [Flurry class]; 
} 

Когда этот код называется он пытается использовать SCNetworkReachability и получает exceptions ...

Как мы можем окурка/издеваться из обращения к Flurry, которая имеет статическую реализацию как следующий?

[Flurry setAppVersion:@"1.0"]; 
[Flurry setCrashReportingEnabled:NO]; 

ответ

3

Я хотел бы удалить Flurry из конфигурации сборки я использую для тестирования (удалить его из рамки поиска путей/библиотек пути поиска). Я бы создал свой собственный фиктивный Flurry, захватив файл заголовка Flurry и создав собственную реализацию пустым методом. Наконец, если мне будет интересно, что Flurry будет вызван, я бы использовал OCMock, чтобы издеваться над моим поддельным классом.

+0

Хм, это сработает. Позволь мне дать это выстрел. –

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

  • Нет связанных вопросов^_^