Как издеваться над файлом в javascript?

Я разрабатываю небольшой проект для осуществления своих навыков TDD. Проект состоит из аудиоплеера с файлами drag'n'roroping в плейлисте. Я использую Jasmine как tsting framework. Проблема, с которой я столкнулся, заключается в том, что я не могу издеваться над файлами javascript, чтобы проверить мои функции загрузки файлов. Я попытался создать файл следующим образом:

new File(new Blob(), "name");

но Chrome не позволяет создавать файлы вручную. Конструктор файлов является незаконным. Я нашел решение с grunt.js, которое заключается в возвращении некоторых файлов из grunt, но я не очень хочу использовать serveride для такого небольшого тестового проекта. Есть ли способ обхода проблемы?

Ответы

Ответ 1

Chrome позволит вам создать новый файл:

var f = new File([""], "filename");

Однако IE11 (и другие браузеры?) не будет.

Вот мой (плохой?) поддельный Файл:

var blob = new Blob([""], { type: 'text/html' });
blob["lastModifiedDate"] = "";
blob["name"] = "filename";
var fakeF = blob;

Вы можете заполнить значения по своему усмотрению. Вы можете заполнить blob тем, что вам нужно. (См. Другой ответ, как использовать изображение).

Я тестировал это в IE11, Chrome и Firefox. Пока мне кажется, что я работаю, по крайней мере, для тестирования модулей.

Bonus: Здесь он находится в typescript:

let blob = new Blob([""], { type: 'text/html' });
blob["lastModifiedDate"] = "";
blob["name"] = "filename";

let fakeF = <File>blob;

Ответ 2

Вам не нужно создавать blob, вы можете сделать это, который непосредственно использует подлинную строку изображения (я использовал этот конвертер), или вы можете выполнить приведенный ниже пример (если вы действительно не хотите иметь действительное изображение):

html <img id="test" />

var img = window.btoa('I don't care about a broken image');
document.getElementById('test').src='data:image/png;base64,'+img;

Функция btoa - это просто создать base64 из строки.