将间谍分配给嵌套的JSON对象方法

时间:2018-05-31 22:53:14

标签: javascript typescript highcharts jasmine karma-runner

我目前正在为Highcharts测试一些自定义代码。触发load事件时会调用此代码,这在外行语中意味着在完全呈现图表时调用load()

当图表完全呈现时,我的自定义代码会执行,并且在满足某些条件时会调用hide()。这个问题的实施对于这个问题的背景并不重要。

我的问题是,我想监视嵌套在JSON对象中的hide()

      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 property之后。代码chartMapper()使用我的chart对象生成系列并强制触发load事件,该事件将运行我想要测试的代码。

我已将两个间谍附加到hide内的data.dataLabel对象。我想检查是否有间谍被调用,但是,我得到错误:

ReferenceError: dataLabel is not defined

因为hide()位于分配给dataLabel的点数组中,所以我不太清楚如何解决这个问题。我为expect语句尝试了类似data[0].dataLabel的东西,但这只是说我的索引不存在。

0 个答案:

没有答案