使用 Jest/Enzyme 测试 Chart.js - 无法创建图表:无法从给定项目获取上下文

CWS*_*tes 4 reactjs jestjs chart.js enzyme

我的测试通过得很好,但是我收到以下错误。

  console.error node_modules/chart.js/src/core/core.controller.js:127
  Failed to create chart: can't acquire context from the given item
Run Code Online (Sandbox Code Playgroud)

我环顾四周,这里提到了我能找到的最接近的答案:https : //github.com/chartjs/Chart.js/issues/3696但它看起来好像错误是有意的方式优雅地失败而不会导致测试失败。

我正在使用 Jest/Enzyme 编写一个测试来检查哪些选项被传递给我的图表组件。

  it('xAxis set to false', () => {
    const wrapper = mount(<Chart xAxis='false' chart={parentState.chart} />);
    const BarChart = wrapper.find('Bar');

    console.log(BarChart.props().options);
    expect(BarChart.props().options.scales.xAxes[0].display).toEqual(false);

    wrapper.unmount();
  });
Run Code Online (Sandbox Code Playgroud)

CWS*_*tes 10

当我在提问之前花一天时间研究我的问题时,我总是觉得很傻,然后我在 15 分钟后自己弄清楚了......

我不会删除它,而是为可能有类似问题的其他人发布答案。我意识到我正在使用 chart.js 的包装器,react-chartjs-2所以我在他们的 github 上搜索,果然有人已经发布了我问题的确切答案。https://github.com/jerairrest/react-chartjs-2/issues/155

将以下模拟添加到我的setup-jest.js文件中解决了我遇到的控制台错误。

jest.mock('react-chartjs-2', () => ({
  Bar: () => null
}));
Run Code Online (Sandbox Code Playgroud)