Присвоение шпиона методу вложенного объекта JSON - PullRequest
0 голосов
/ 01 июня 2018

В настоящее время я работаю над тестированием некоторого пользовательского кода для 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 для оператора ожидаемого, но это просто говорит, что мой индекс не существует.

...