Приемочный тест для загрузки файлов в ember cli
Я хотел бы создать базовый приемочный тест в ember, который загружает файл.
Я могу высмеять сервер с помощью Pretender, но мне нужно знать, как заполнить поле input type="file"
файлом из моей файловой системы. Таким образом, вопросы в основном:
- Как заполнить поле входного файла тестовыми помощниками ember, использовать
fillIn
помощник?
- Как добавить образцы файлов в папку и получить их из моего приемочного теста. Можно ли получить текущий путь моего проекта Ember из теста приёма, чтобы выбрать файл из загружаемой файловой системы? В Rails мы используем для этого
Rails.root
.
Ответы
Ответ 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