reactjs - 用于 Jest 单元测试的模拟 Highcharts(带导出)
问题描述
我正在使用 Jest 测试一个 React 项目。我们的应用程序使用 Highcharts 在我们的视图上呈现数据可视化,但是在使用 Highcharts 插件模块之一“导出”时遇到问题,该模块用于捕获已经呈现的 svg Highcharts 的 dataURL。
不幸的是,在实际运行应用程序并看到一切正常时,一切都运行良好,但由于单元测试是一个很大的要求,我现在被困在这个模拟方面。
我的组件导入了 highcharts,它的模块就像
import Highcharts, { Chart } from 'highcharts';
import addExporting from 'highcharts/js/modules/exporting.src.js'
addExporting(Highcharts);
我在mocks /highcharts.ts 中创建了一个genMockFromModule
const highcharts: any = jest.genMockFromModule(`highcharts`);
highcharts.getOptions = () => ({ plotOptions: {}, exporting: {} });
module.exports = highcharts;
我在我的测试文件(tests /components/Chart.ts)中尝试过
jest.mock('highcharts', () => ({
Chart: jest.fn(),
setOptions: jest.fn(),
seriesTypes: {},
}));
jest.mock('highcharts/js/modules/exporting.src.js', () => jest.fn() )
似乎无论我尝试什么,我总是遇到这个问题:
TypeError:无法读取未定义的属性“导航器”
16 | > 18 | addExporting(Highcharts); | ^ 19 | at node_modules/highcharts/js/modules/exporting.src.js:49:23 at node_modules/highcharts/js/modules/exporting.src.js:1760:3
如果没有 addExporting 模块,我无法弄清楚如何模拟其他 highcharts 功能,例如
if(this.chartRef) {
this.chartRef.destroy()
}
解决方案
推荐阅读
- angular - ControlValueAccessor with FormArray in Angular
- python - 删除任何具有空列表的集群
- r - 将希腊符号添加到图例 ggplot(不止一个)
- java - 用Java在屏幕上获取像素的快速方法
- python - 尝试在本地主机中从 Django 中的 POSTGRESQL 获取 JSON 数据
- c++ - 未找到 .h 文件中定义的函数的标识符
- firebase - Firebase:无法添加新应用(错误消息:请求包含无效参数)
- reactjs - 如何在材料 ui 中显示比文本字段宽度更长的文本?
- blazemeter - 错误:RuntimeError:Polyfit 健全性测试发出警告,很可能是由于使用了有问题的 Accelerate 后端
- php - 当我尝试更新数据库信息时出现问题 - DOESN'T UPDATE Just create a new row