Реактивный ферментный тест - PullRequest
0 голосов
/ 24 августа 2018

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

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

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

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

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

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);

Буду признателен за любую помощь в том, как проверить этот метод.

1 Ответ

0 голосов
/ 24 августа 2018

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

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