FormData не определяется в React Jest - PullRequest
0 голосов
/ 14 января 2020

Я пишу код модульного тестирования для проекта React. Я пытаюсь проверить одну функцию

//function aa
export const login = (values) => async => (dispatch) => {
  let bodyFormData = new FormData();

  bodyFormData.append('username', values.login);
  bodyFormData.append('password', values.password);
  return await axios({
   method: 'post',
   url: url,
   data: bodyFormData
  }
}

//aa test
it("Login Action", async () => {
  afterEach(() => {
    store.clearActions();
  });
  const values = {
    login: "aaaaa",
    password: "bbbbb"
  };
  const expectedResult = { type: "LOGIN_PASS" };

  const result = await store.dispatch(login(values));
  expect(result).toEqual(expectedResult);
});

В браузере это работает нормально. но при тестировании я получаю ниже ошибку

ReferenceError: FormData не определен

Я пытался использовать этот модуль, но не повезло ... https://www.npmjs.com/package/form-data

Я не хочу просто проверять топор ios, мне нужно проверить полную функцию.

1 Ответ

1 голос
/ 14 января 2020

Вам нужно будет смоделировать FormData в вашем модульном тесте, так как веб-API FormData недоступен в среде node.js / jsdom.

function FormDataMock() {
  this.append = jest.fn();
}

global.FormData = FormDataMock

Если вы хотите sh высмеивать другие методы в глобальном FormData:

const entries = jest.fn()
global.FormData = () => ({ entries })
...