WedX - журнал о программировании и компьютерных науках

Как использовать readAsText() в тесте Jasmine и предупредить результат?

Я пытаюсь протестировать функцию, которая возвращает Blob CSV, у нее есть тип, имя и т. д., и предупреждение, которое возвращает это:

Object{size: 9, type: 'text/csv;charset=utf-8;', name: 'Test'}

и это тоже instanceOf Blob.

Я попытался сделать это, проконсультировавшись с этим вопросом. ..

var fr = new FileReader();
fr.onload = function(e) {
  return e.target.result;
};
alert(fr.readAsText(blob));
alert(blob instanceof Blob);

Хотя не повезло, первый вызов предупреждения просто возвращает undefined.

ALERT: undefined
ALERT: true 

Любая помощь в этом? Как я могу преобразовать содержимое большого двоичного объекта CSV в строку, которую затем можно прочитать и проверить результат содержимого в CSV?


Ответы:


1

FileReader — это асинхронная библиотека. Когда вы назначаете функцию fr.onload, FileReader будет вызывать эту функцию с данными при загрузке файла. Это означает, что ваши данные доступны только внутри этой функции, и вы не можете передать их во внешнюю область. Вы хотите сделать что-то вроде этого:

var fr = new FileReader(); // Create FileReader instance

// Assign a function to be called when FileReader reads a file
fr.onload = function(e) {

  // Your data is available in this scope only. Returning it does nothing.
  alert(e.target.result);
  alert(blob instanceof Blob);
};

fr.readAsText(blob); // Tell our instance of FileReader to read `blob`
03.07.2018

2

На самом деле проблема заключалась в том, что что-то еще в тесте имитировало создание CSV/BLOB, в частности ngMocks, поэтому на самом деле blob не создавался.

Если у вас есть аналогичный случай, делающий это в тесте Jasmine, это может быть и ваша ситуация. Чтобы обойти это, я издевался над функцией, которая создает/организует содержимое большого двоичного объекта в тесте, а затем просто записал это локально, чтобы я мог протестировать его позже... вместо того, чтобы пытаться получить доступ к самому большому двоичному объекту.

this.CSV.stringify.and.callFake(function(csvFeaturesInStringify, csvOptionsInStringify) {
    this.csvFeatures = csvFeaturesInStringify;
    this.csvOptions= csvOptionsInStringify;
    return {
      then: function(successCallback) {
        successCallback("geometry,LAT,LONG,name,marker-color");
      }
    };
07.07.2018
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]