我目前正在为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
的东西,但这只是说我的索引不存在。