Получение NSImage от NSProgressIndicator

Основная идея заключается в том, чтобы шпионить за функцией, передаваемой в 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!');
5
задан Ned Batchelder 9 November 2008 в 17:26
поделиться

2 ответа

Я использовал AMIndeterminateProgressIndicatorCell для неопределенных индикаторов хода выполнения в ячейках. Это не истинный NSProgressIndicator, поскольку это делает свой собственный рисунок, но это - довольно хорошая копия, IMO.

alt text
(источник: harmless.de)

5
ответ дан 14 December 2019 в 09:04
поделиться

Индикаторы хода выполнения действительно используют фоновый поток для хранения их рисунка анимации, даже если основной поток занят, делая что-то еще, таким образом, возможно, что это - то, что вызывает проблему. Вы могли бы попытаться назвать setUsesThreadedAnimation:NO на индикаторе хода выполнения прежде, чем сделать Ваш рисунок, чтобы видеть, имеет ли это значение.

Другой такт должен был бы создать пустой NSImage и затем назвать drawRect индикатора хода выполнения: метод для рендеринга его содержания в буфере изображения. Это посмотрело бы что-то как:

NSProgressIndicator* progressIndicator;
NSImage* image = [[NSImage alloc] initWithSize:[progressIndicator bounds].size];
[image lockFocus];
[progressIndicator drawRect:[progressIndicator bounds]];
[image unlockFocus];
2
ответ дан 14 December 2019 в 09:04
поделиться