Я пытаюсь протестировать приложение React с использованием машинописи, используя Jest.Приложение и тесты работают нормально.У меня возникла проблема с набором диспетчера реванша в поддельных реквизитах, которые передаются компоненту в тестовом файле.Если я это сделаю:
toggleUserForm={jest.fn<Dispatch>()}
получаю ошибку:
No overload expects 1 type arguments, but overloads do exist that expect either 0 or 2 type arguments.
При передаче пустого массива в качестве второго аргумента jest.fn ()- типы jest.fn (<'Dispatch, []>) не могут быть назначены.
Компонент:
interface FormBuilderProps {
questions: Question[]
toggleUserForm: Dispatch
addQuestion: Dispatch
}
const FormBuilder: React.SFC<FormBuilderProps> = ({
questions,
toggleUserForm,
addQuestion,
}): JSX.Element => {
const validate = (): boolean => {
const failedFields = questions.filter(q => q.text === '')
if (failedFields.length === 0) return true
return false
}
const submit = () => validate() && toggleUserForm()
return (
<>
<QuestionList questions={questions} />
<Button onClick={() => addQuestion({ text: '', type: 'text', level: 0 })}>
Add Input
</Button>
<Button onClick={submit} disabled={questions.length === 0}>
Make a form
</Button>
</>
)
}
Тесты:
it('Component should render "Make Form" button', () => {
const component = shallow(
<FormBuilder
questions={questionsMock}
toggleUserForm={jest.fn<Dispatch>()}
addQuestion={jest.fn<Dispatch>()}
/>
)
expect(component.find(Button).contains('Make a form')).toBe(true)
})