Как набрать Jest fn () макеты диспетчеров Rematch в приложении React-Typescript? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь протестировать приложение 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)
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...