При попытке протестировать объект html-файла он не позволит мне предварительно заполнить его образцом изображения?

Я создал компонент, который хотел протестировать с помощью Angular Dart Framework.

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

В моей иерархии у меня есть:

./bird.jpg
./image_uploader_po.dart
./image_uploaders_test.dart

а потом в коде у меня

test("testing against valid image upload", () async {
  File testImage = new File("./bird.jpg");  //improper constructor.
  fixture.update((Component com){
    com.imageFile = testImage;
  });
  uploaderPO = await fixture.resolvePageObject(Component);
});

У меня проблема в том, что это не реализация файла dart/io, а реализация Html.

Я пытался определить, как лучше всего действовать для этого, чтобы открыть файл для доступа на чтение, чтобы применить к реализации компонента File.

Я искал файл для чтения, но это относится к существующему файлу, с которым у меня проблемы.

Прямо сейчас конструктор файлов: File(List<Object> fileBits, String filename, [Map<String, Dynamic> options]); и в конечном итоге не знал, какими должны быть «fileBits».

Вы можете найти класс файлов, который я использую, по адресу: https://api.dartlang.org/stable/1.24.3/dart-html/File-class.html

Мое желаемое конечное состояние — использовать образец файла изображения, чтобы применить его к компоненту Image Uploader.

Спасибо.


person Fallenreaper    schedule 27.12.2017    source источник


Ответы (1)


Тестовый контекст, в котором вы работаете, предназначен для Интернета, поэтому доступен только dart:html, а не dart:io.

Как вы можете себе представить, в веб-скрипте возможность произвольной загрузки файла из файловой системы процессов может быть серьезной брешью в безопасности. Таким образом, в Интернете есть много ограничений на это.

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

File testImage = new File([], "bird.jpg"); // Mock contents don't matter

Если содержимое важно для теста, вы можете использовать XHR для получения изображения или попытаться встроить байты.

var response = await HttpRequest.request("bird.jpg", responseType: "blob");
fixture.update((Component com){
  com.imageFile = response.response;
});

Надеюсь, ваш компонент может сам читать Blob. Если нет, вы можете попытаться создать файл, используя вместо этого тип ответа 'arraybuffer', но это немного более запутанно.

person Ted Sander    schedule 02.01.2018
comment
Это хорошо знать. Я не был уверен, как увеличить эти параметры. Я использую это для своих тестовых случаев. - person Fallenreaper; 03.01.2018