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

qzlgjiam  于 11个月前  发布在  Jest
关注(0)|答案(2)|浏览(157)

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

console.error node_modules/chart.js/src/core/core.controller.js:127
  Failed to create chart: can't acquire context from the given item

字符串
我已经环顾四周,我能找到的最接近的答案在这里提到: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();
  });

v440hwme

v440hwme1#

我总是觉得很傻,当我花了一天的时间研究我的问题之前,问它,然后我自己弄清楚了15分钟后......
而不是删除这个,我打算张贴的答案,为其他人可能有类似的问题。我意识到,我使用的 Package 为chart.js,react-chartjs-2,所以我在他们的github搜索,果然有人已经张贴了确切的答案,我的问题。https://github.com/jerairrest/react-chartjs-2/issues/155
将下面的mock添加到我的setup-jest.js文件中解决了我遇到的控制台错误。

jest.mock('react-chartjs-2', () => ({
  Bar: () => null
}));

字符串

mzillmmw

mzillmmw2#

CWSites的答案并不是完全错误的,但并不适用于所有测试用例,因为使用null作为值时,没有呈现可以测试的元素。
下面的解决方案适用于所有与react-chartjs-2相关的测试。

jest.mock('react-chartjs-2', () => {
  const { forwardRef } = require('react');
  const Line = forwardRef((props, ref) => <div ref={ref} {...props}></div>);
  return {
    Line,
  };
});

字符串

相关问题