Создал реактовский компонент:
import React from 'react';
import Chart from 'chart.js';
class RadarChart extends React.Component {
componentDidMount() {
const ctx = document.getElementById('radar-chart');
this.chart = this._createChart(ctx);
}
_createChart(ctx) {
return new Chart(cxt, {
type: 'radar',
data: {
labels: ['Strength', 'Skill', 'Health', 'Speed', 'Luck'],
datasets: [
{
label: 'Points',
data: [25, 50, 55, 30, 40],
backgroundColor: 'rgba(255, 99, 132, 0.2)',
borderColor: 'rgba(255,99,132,1)',
borderWidth: 1
},
{
label: 'Points',
data: [42, 19, 43, 56, 33],
backgroundColor: 'rgba(255, 159, 64, 0.2)',
borderColor: 'rgba(255, 159, 64, 1)',
borderWidth: 1
}
]
}
});
},
render() {
return (
<canvas id="radar-chart"></canvas>
);
}
}
Все работает отлично. Создаю spec файл, пробую протестировать:
import React from 'react';
import { mount } from 'enzyme';
import sinon from 'sinon';
import RadarChart from './radar-chart.react';
describe('<RadarChart />', () => {
it('компонент успешно замаунтился', () => {
sinon.spy(RadarChart.prototype, 'componentDidMount');
mount(<RadarChart />);
expect(RadarChart.prototype.componentDidMount.calledOnce).to.equal(true);
});
});
Код падает с ошибкой, пишет:
null is not an object (evaluating 'context.length')
Chart@webpack:///~/chart.js/src/core/core.js?5de4:16:0 <- src/js/engine/modules/chart/radar-chart/radar-chart.spec.js:
Если не вызывать метод `_createChart`, то все хорошо.
Builder: Webpack
Test Runner: Karma
Code:
https://github.com/MadMed677/8ForLife/tree/feature...
Может дело именно в самой работе библиотеки с Karma?