Как правильно тест history.replace и history.push в React приложений?

Вопрос задан: 1 год назад Последняя активность: 1 год назад
up 3 down

Когда я пытаюсь заменить тест или нажать я либо получить empthy объект, представляющий историю или когда я использую дразнить его никогда не вызывается. В настоящее время я получаю это: Не удается подсмотреть имущество, заменить, потому что это не функция; неопределенными дано вместо или когда я использую его макет dosnt дозвонились.

const submitHandler = async e => {
    e.preventDefault();
    const apiUrl = 'http://localhost:8080/auth/signup'
    const signupData = {
      email,
      password,
      matchPassword,
      username
    }
    const responseData = await postData(apiUrl,signupData,'')
    if (responseData === undefined) {
      toggleValidationErrors([
        {
          param: 'server-error',
          msg: `Server isn't availdable.Please try again later!`
        }
      ]);
    } else if (responseData.validationErrors) {
      toggleValidationErrors(responseData.validationErrors);
    } else {
      history.replace(`/login`);
    }
  };

import React from 'react'

import {render,fireEvent, getByValue,waitForElement} from 'react-testing-library'
import { BrowserRouter } from 'react-router-dom';
import SignupForm from './SignupForm'
describe('<SignupForm />',() => {
    const username = "testUser";
    const email = "[email protected]";
    const password = 'testpass1012'
    const matchPassword = 'testpass1012'
    const history = { replace: jest.fn() };
    const { container, getByPlaceholderText, getByValue,getByText } = render (<SignupForm />,{wrapper:BrowserRouter})
    beforeEach(() => {    

        const submitButton = getByText('SIGN UP')
        fireEvent.click(submitButton)
    })
   
      it('should call history.replace',() => {
          
        const replaceSpy = jest.spyOn(history, 'replace');

          expect(replaceSpy).toBeCalled()
          replaceSpy.mockRestore()
      })
})

1 ответ

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 1 down

История шпиона вы создали бы получить передается в компонент тестируемых для того, чтобы получить колл. История шпион не передаются в, поэтому вы получаете не определены.

Если ваш <SignupForm /> компонент получает историю пропеллера, а затем просто пройти в истории шпиона, созданном в тестовом файле и он должен работать.

Другой подход должен был бы создать отдельный файл, например, в папке Util и импорта

import { createBrowserHistory } from 'history';

У вас есть доступ к этому при установке реагировать-маршрутизатор. Затем экспортировать следующее:

export default createBrowserHistory();

Это создает объект истории так же, как вы получите от реакции маршрутизаторов объекта истории. Отсюда можно затем импортировать createBrowserHistory объект в тестовый файл и сделать утверждения об истории.

Ошибка 505

Что-то пошло не так

Попробуйте воспользоваться поиском