Основная идея заключается в том, чтобы шпионить за функцией, передаваемой в onPress
. Затем вы должны смоделировать событие onPress
на кнопке и проверить, была ли вызвана функция с какими-либо параметрами и т. Д. Затем вы проверили бы фактический вывод функции. Так, например, если функция изменяет текст в кнопке с «Click Me» на «Clicked!», Вы должны установить первое текстовое свойство перед щелчком, а затем проверить обновленное.
Пример с Jest:
const onPressSpy = jest.fn();
const gettingStartedButton = shallow(<GettingStarted object={onPressSpy} />);
expect(gettingStartedButton.find('button').children().text()).toBe('Click Me!');
gettingStartedButton.find('button').simulate('press');
expect(onPressSpy).toHaveBeenCalled();
expect(gettingStartedButton.find('button').children().text()).toBe('Clicked!');
Я использовал AMIndeterminateProgressIndicatorCell для неопределенных индикаторов хода выполнения в ячейках. Это не истинный NSProgressIndicator, поскольку это делает свой собственный рисунок, но это - довольно хорошая копия, IMO.
(источник: harmless.de)
Индикаторы хода выполнения действительно используют фоновый поток для хранения их рисунка анимации, даже если основной поток занят, делая что-то еще, таким образом, возможно, что это - то, что вызывает проблему. Вы могли бы попытаться назвать setUsesThreadedAnimation:NO на индикаторе хода выполнения прежде, чем сделать Ваш рисунок, чтобы видеть, имеет ли это значение.
Другой такт должен был бы создать пустой NSImage и затем назвать drawRect индикатора хода выполнения: метод для рендеринга его содержания в буфере изображения. Это посмотрело бы что-то как:
NSProgressIndicator* progressIndicator; NSImage* image = [[NSImage alloc] initWithSize:[progressIndicator bounds].size]; [image lockFocus]; [progressIndicator drawRect:[progressIndicator bounds]]; [image unlockFocus];