Подтвердить что ты не робот

Приемочный тест для загрузки файлов в ember cli

Я хотел бы создать базовый приемочный тест в ember, который загружает файл. Я могу высмеять сервер с помощью Pretender, но мне нужно знать, как заполнить поле input type="file" файлом из моей файловой системы. Таким образом, вопросы в основном:

  • Как заполнить поле входного файла тестовыми помощниками ember, использовать fillIn помощник?
  • Как добавить образцы файлов в папку и получить их из моего приемочного теста. Можно ли получить текущий путь моего проекта Ember из теста приёма, чтобы выбрать файл из загружаемой файловой системы? В Rails мы используем для этого Rails.root.
4b9b3361

Ответ 1

Я решил это по-другому: я не загружаю файл из файловой системы, но создаю Blob вручную и использую triggerHandler на входном элементе:

let inputElement = $('input[type=file]');

let blob = new Blob(['foo', 'bar'], {type: 'text/plain'});
blob.name = 'foobar.txt';
inputElement.triggerHandler({
  type: 'change',
  target: {
    files: {
      0: blob,
      length: 1,
      item() { return blob; }
    }
  }
});

Это вызывает загрузку.

Ответ 2

Вы не можете использовать что-либо вроде fillIn для настройки поля файла с готовым к загрузке значением файла, поскольку браузер не позволит вам:

Как установить значение для ввода файла в HTML?

Я думаю, что единственный возможный способ сделать это - использовать xhr для загрузки файла, который существует на сервере, а затем использовать xhr для его загрузки. Я не могу думать о том, как вы могли программным образом установить значение поля ввода файла, не введя проблему безопасности, объясненную в этом вопросе SO, с которым я связан.

Здесь где-то начинать работу с демо файлом, который вы хотите протестировать при загрузке после того, как вы его загрузили, формирует URL-адрес http: https://developer.mozilla.org/en-US/docs/Web/API/FileReader