Я пытаюсь проверить этот блок кода в моем приложении React с Jest и Enzyme:
openDeleteUserModal = ({ row }: { row: IUser | null }): any => (
event: React.SyntheticEvent
): void => {
if (event) event.preventDefault();
this.setState({ userToDelete: row, isDeleteUserModalOpen: true });
};
Это тест:
describe('OpenDeleteUserModal', () => {
let wrapper: ReactWrapper;
let instance: any;
beforeEach(() => {
wrapper = mount(
<MemoryRouter>
<Route render={props => <UsersOverviewScreen {...props} {...defaultProps} />} />
</MemoryRouter>
);
instance = getComponentInstance(wrapper);
instance.openDeleteUserModal({ user: mockUser });
wrapper.update();
});
it('should SET the isDeleteUserModalOpen to true', () => {
expect(instance.state.isDeleteUserModalOpen).toBeTruthy();
});
it('should SET the userToDelete to mockUser', () => {
expect(instance.state.userToDelete).toEqual(mockUser);
});
});
Тест и файл .tsx
, что означает, что необходим весь шаблон для React Router. Я получаю ложное и неопределенное значение вместо истинного.
Я пытался смоделировать щелчок, но безуспешно. Смотрите ниже:
it('should SET the isDeleteUserModalOpen to true', () => {
const deleteUserButton = wrapper.find('renderUsers').find('button');
deleteUserButton.simulate('click');
jest.spyOn(instance, 'openDeleteUserModal');
instance.openDeleteUserModal();
expect(instance.openDeleteUserModal).toHaveBeenCalled();
expect(instance.state.isDeleteUserModalOpen).toBeTruthy();
});
Может кто-нибудь помочь мне понять, почему это не получается.