Я пишу тест для одного из частных методов 'prepareUserCriteria' в моем компоненте 'UserDataView'.
Это, в свою очередь, передает данные в метод requestProfile, который на самом деле является действием.
Чтобы проверить 'prepareUserCriteria', мне нужно проверить, вызывается ли мой 'requestProfile' с правильными данными.
Однако я получаю сообщение об ошибке: «TypeError: Попытка обернуть неопределенное свойство undefined как функцию»
Как это исправить?
Вот код:
Компонент: UserDataView
prepareUserCriteria() {
const criteria = this.state.searchCriteria;
//Do some checks..
if(...) {
criteria = ......
} else if(){
criteria = .......
}
return criteria;
}
request(){
//Do some checks...
.............
return this.props.dispatch.requestProfile({
searchCriteria: this.prepareUserCriteria(),
filters,
....
//other arugments
....
....
});
}
Тест:
import React from 'react';
import { shallow } from 'enzyme';
import { requestProfile } from '../profile-actions';
import { spy, stub, assert as sinnonAssert } from 'sinon';
import { UserDataView } from '../user-data-view';
import moment from 'moment';
test('should test prepareUserCriteria logic', () => {
const userSearchProps = {
dispatch: spy(),
joiningDate: moment('2018-12-12T00:00:00.000Z'),
background: {},
error: false,
isCalendarLoading: false,
clearFlightSelectionState: () => {
},
metadata: fromJS({
userProfileType: 'EMP'
}),
searchCriteria: {
address: [{ currentCity: 'FCO' }, { permanentCity: 'LIN' }],
user: {
firstName: 'John',
lastName: 'Smith'
},
isValidUser: true
}
};
userSearchProps.requestProfile = stub(requestProfile).callsFake(() => {});
const userDataView = shallow(<UserDataView {...userSearchProps} />, context);
sinonAssert.calledWith(userDataView.instance().props.dispatch.requestProfile, {
searchCriteria: {
address: [{ currentCity: 'FCO' }, { permanentCity: 'LIN' }],
user: {
firstName: 'John',
lastName: 'Smith'
},
isValidUser: true
}
});
});