Как показать индикаторы прокрутки UIWebView

При кодировании использования TDD я создаю API открытого интерфейса для объекта. Это означало бы в Вашем примере, что мой интерфейс, который реализации класса будут только иметь push(), pop() и isEmpty().

Однако тестирование этих методов путем вызова их не является модульными тестами в себе (больше на этом в конце этого сообщения) , так как они, скорее всего, тестируют сотрудничество нескольких внутренних методов, которые вместе приводят к желаемому результату, и это - то, о чем вопрос: те методы должны быть частными?

Мой ответ не, используйте protected (или эквивалент его на языке по Вашему выбору) для тех вместо private, что означает, что, если Ваш проект и тестовые АНГЛИЧАНЕ структурированы точно так же, класс набора тестов видит в фактическом классе, так как они находятся фактически в той же папке. Их можно считать модульными тестами: Вы тестируете функциональные блоки самого класса, не их сотрудничество.

Что касается тестирования отдельных методов интерфейса/API, конечно, важно сделать это также, и я не подвергаю сомнению тот факт, что, те однако падают где-нибудь между туманной строкой поблочное тестирование и приемочные испытания .

, По-моему, самая важная вещь помнить вот состоит в том, что модульные тесты говорят Вам, если метод неправильно себя ведет, приемочные испытания говорят, неправильно себя ведет ли сотрудничество нескольких методов/классов, и интеграционное тестирование говорит, неправильно себя ведет ли сотрудничество нескольких систем.

8
задан Pang 10 November 2014 в 09:56
поделиться

1 ответ

Нет реального способа сделать это через опубликованный API, однако я думаю, что в этом случае можно угадать подпредставление UIScrollView , если вы убедитесь, что ваш приложение не аварийно завершает работу, если вы не можете найти UIScrollView :

UIView* scrollView = [webView.subviews objectAtIndex:0];
if ([scrollView isKindOfClass:[UIScrollView class]) {
  [((UIScrollView*)scrollView) flashScrollIndicators];
} else {
  // If Apple changes the view hierarchy you won't get
  // a flash, but that doesn't matter too much
}

РЕДАКТИРОВАТЬ: Вышеупомянутое не будет работать, потому что первое подвид UIWebView - это UIScroller , а не UIScrollView (моя память могла сыграть со мной злую шутку). Может быть, попробуйте следующее?

UIView* uiScroller = [webView.subviews objectAtIndex:0];
if ([uiScroller respondsToSelector:@selector(displayScrollerIndicators)]) {
  [((UIScrollView*)uiScroller) performSelector:@selector(displayScrollerIndicators)];
} else {
  // If Apple changes the view hierarchy you won't get
  // a flash, but that doesn't matter too much
}
2
ответ дан 5 December 2019 в 12:11
поделиться