Я знаю, что эта проблема уже была решена в других статьях, но, несмотря на предложенные решения, я не могу решить проблему ...
Вот тест, который я пытаюсь реализовать:
import React from 'react'
import renderer from 'react-test-renderer'
import { Provider } from 'react-redux'
import store from '../core/redux-utils/store'
import { shallow, mount } from 'enzyme'
import Auth from '../screens/Auth'
import AuthForm from '../screens/Auth/AuthForm'
import { MDBBtn } from 'mdbreact'
jest.mock('react', () => {
const React = jest.requireActual('react')
React.Suspense = ({ children }) => children
return React
})
describe('Test <Auth /> component', () => {
it('renders as expected', () => {
const wrapper = shallow(
<Provider store={store}>
<Auth />
</Provider>
)
expect(wrapper.dive()).toMatchSnapshot()
})
})
describe('Test <AuthForm /> component', () => {
let wrapper
let props
beforeEach(() => {
props = {
handleSubmit: jest.fn(),
t: jest.fn()
}
wrapper = mount(<AuthForm {...props} />, {
disableLifecycleMethods: true
})
})
it('should render correctly', () => {
const tree = renderer.create(<AuthForm {...props} />)
expect(tree.toJSON()).toMatchSnapshot()
})
it('should find submit button', () => {
console.log(wrapper.debug())
expect(wrapper.find('button').simulate('click'))
expect(props.handleSubmit).toHaveBeenCalled()
})
})
Компонент для тестирования является компонентом без состояния:
//@flow
import React from 'react'
import { withTranslation } from 'react-i18next'
import { MDBContainer, MDBBtn, MDBInput } from 'mdbreact'
import Title from '../../sharedComponents/Title'
type Props = {
handleChange: Function,
handleSubmit: Function,
t: any
}
const AuthForm = ({ handleChange, handleSubmit, t }: Props) => (
<MDBContainer className='form-container'>
<Title className='mb-5' title={t('auth-title')} />
<form onSubmit={handleSubmit} className='d-flex flex-column'>
<MDBInput
label={t('auth-login-label')}
name='email'
type='email'
hint={t('auth-login-hint')}
onChange={handleChange}
required
/>
<MDBInput
label={t('auth-password-label')}
name='password'
type='password'
hint={t('auth-password-hint')}
onChange={handleChange}
required
/>
<a href='/' className='mt-0 mb-5'>
{t('auth-password-forgotten')}
</a>
<MDBBtn type='submit'>{t('auth-button')}</MDBBtn>
</form>
</MDBContainer>
)
export default withTranslation()(AuthForm)
Вы можете найти ошибку здесь
Моя цель состоит в том, чтобы просто успешно протестировать рендеринг компонента, затем нажать на кнопку отправки. Как я должен сделать?
Спасибо за помощь!