У меня есть компонент, который упаковывает мои aggrid
.Окружающий компонент импортирует мой класс DataHolder
, который имеет функцию с именем getVariablesLength()
.Однако всякий раз, когда я запускаю тест, я получаю сообщение об ошибке TypeError: Cannot read property 'getVariablesLength' of undefined
.
Это характерно для реакции ag-grid.Я использую энзим и шутку для моего тестирования.Я искал различные способы для имитации импортированных модулей es6, но на данный момент я не уверен, правильно ли я понимаю процесс.
//AGVariableGrid.ui.test.js
import AGVariableGrid from 'components/AGVariableGrid.jsx';
import Adapter from 'enzyme-adapter-react-16';
import { AgGridReact } from 'ag-grid-react';
import AgDataHolder from 'components/AgDataHolder.js';
//...
jest.mock(AgDataHolder);
beforeEach((done) => {
console.log(mockDataHandler);
component = mount(<AGVariableGrid/>);
// get agGridReact instance in AGVariableGrid
agGridReact = component.find(AgGridReact).instance();
// ensure grid api has been set and other aggrid specific logic
});
test('all rows selected', () => {
// no rows are selected initially
expect(agGridReact.api.getSelectedRows().length).toEqual(0);
// simulate a user clicking on the select all button
component.find('#selectAll').simulate('click', {
// no actual event data is needed for this particular event/use case
});
expect(agGridReact.api.getSelectedRows().length).toEqual(3);
});
А внутри AGVariableGrid
// ...
import AgDataHolder from 'components/AgDataHolder.js';
// ...
// in componentDidMount
this.dataHolder = new DataHolder();
const potato = this.dataHolder.getVariablesLength() // error on dataHolder being undefined
// ...
Я действительно хочу знать, почему оно не определено или как правильно смоделировать свойство класса, который был импортирован.