В настоящее время я работаю над тестированием некоторого пользовательского кода для Highcharts.Этот код вызывается при срабатывании события load
, что в терминах непрофессионалов означает, что load()
вызывается после полной визуализации диаграммы.
Когда диаграмма полностью отображается, мой пользовательский код выполняется, и при определенных условиях он вызывает hide()
.Реализация этого не важна для контекста этого вопроса.
Мой вопрос, я хотел бы шпионить за hide()
, который вложен в объект JSON:
const chart = {
series: [{
data: [
{ shapeArgs: { width: 10, height: 10}, dataLabel: { width: 20, height: 20, hide: jasmine.createSpy() }},
{ shapeArgs: { width: 10, height: 10}, dataLabel: { width: 20, height: 20, hide: jasmine.createSpy() }}
],
type: HighchartsChartType.Column
}]
}
jasmine.spyOn(dataLabel, 'hide')
chartMapper().serialize().events.load.bind(chart).call() // triggers the load event
expect(dataLabel.hide).toHaveBeenCalled()
Просто для некоторых дополнительных деталей, dataLabel
это следующий Highcharts свойство .Код chartMapper()
использует мой объект chart
, который генерирует серию и вызывает событие load
, которое запускает код, который я хотел бы протестировать.
Я прикрепил двух шпионов к объекту hide
в data.dataLabel
.Я хочу проверить, были ли вызваны шпионы, однако я получаю сообщение об ошибке:
ReferenceError: dataLabel is not defined
Поскольку hide()
находится внутри массива точек, назначенных dataLabel
, я не совсемуверен, как обойти это.Я пробовал что-то вроде data[0].dataLabel
для оператора ожидаемого, но это просто говорит, что мой индекс не существует.