Jest Testing - TypeError: Невозможно прочитать свойство 'getVariablesLength' из неопределенного из-за неопределенного свойства класса - PullRequest
0 голосов
/ 03 июля 2019

У меня есть компонент, который упаковывает мои 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

// ...

Я действительно хочу знать, почему оно не определено или как правильно смоделировать свойство класса, который был импортирован.

...