Реактивный ферментный тест

Мой компонент реагирования имеет элемент ввода файлов (upload). Когда xlsxфайл загружается пользователем, вызывается метод компонента, который считывает xlsxфайл, преобразуемый в JSON, и помещает его в таблицу redux. Этот метод является «convertFileDataToJSON», который принимает объект File и делает это.

Мне нужно проверить этот метод.

Я не могу использовать «новый файл (« файл: // путь / в / файл »)». Я получаю следующую ошибку

TypeError: FileConstructor не является конструктором (оценивая «новый файл»)

Я использую «новый Blob» для создания объекта blob и отправки его методу экземпляра методу экземпляра.

var myBlob = new Blob(["application_id,Statement " +
"Received Date,Statement Requested Date,"+
"1,10/10/70,10/10/70,10/10/70"+
"2,12/20/71,12/20/71,12/20/71"], {type : "text/plain"});
const json = component.instance().convertFileDataToJSON(myBlob);

Любая помощь будет оценена, как проверить этот метод.

javascript,reactjs,file,blob,enzyme,

2

Ответов: 1


1

Хорошо, не ответ, но позвольте мне предложить вам изменить, как вы тестируете свой собственный код.

Тестирование в соответствии с методом React Component - это более или менее анти-шаблон - плохая вещь. Причина проста: Компонент определяет свой публичный API как реквизит, и это поверхность, с которой вы должны протестировать.

Примечание: в то время как методы экземпляра компонента фактически подвержены родительским компонентам, которые имеют ссылку на них, это считается плохой практикой.

Более подходящий подход состоял бы в том, чтобы иметь автономную функцию, которая может быть проверена изолированно:

export function convertFileDataToJSON(file) {
  return // ...
}

и вы проверите его (в Jest) как:

import { convertFileDataToJSON } from '../utils/somewhere';

const blob = new Blob(
  [
    "application_id,Statement " +
    "Received Date,Statement Requested Date,"+
    "1,10/10/70,10/10/70,10/10/70"+
    "2,12/20/71,12/20/71,12/20/71"
  ],
  {type : "text/plain"}
);

describe('XLSX to JSON', () => {
  it('Works on simple CSV files', () => {
    const data = convertFileDataToJSON(blob);

    expect(data).toMatch( ...something );
  });
})
JavaScript, reactjs, файл, блоб, фермент,
Похожие вопросы