2017-12-27 16 views
1

Ich erstellte Komponente Ich wollte mit Angular Dart Framework testen.Wenn ich versuche, ein HTML-Dateiobjekt zu testen, lasse ich es nicht mit einem Beispielbild vorbelegen?

Wenn ich meine Testdatei erstelle, scheint es, dass ich Probleme beim Erstellen einer Beispieldatei zum Testen habe.

In meinem hirerarchy, ich habe:

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

und dann im Code ich habe

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); 
}); 

Das Problem, das ich habe ist, dass dies nicht die dart ist/io Implementierung von Datei , sondern stattdessen die HTML-Implementierung.

Ich versuchte zu bestimmen, was die beste Vorgehensweise wäre, um eine Datei für den Lesezugriff zu öffnen, die auf die Implementierung der Datei von Component angewendet wird.

Ich suchte Filereader, aber das bezieht sich auf eine Datei, die existiert, was ist, was ich habe Probleme mit.

Gerade jetzt, Datei Konstruktor ist: File(List<Object> fileBits, String filename, [Map<String, Dynamic> options]); und letztlich wusste nicht, was "fileBits" sein sollte.

Sie können die Datei der Klasse I bei verwende finden: es zu einem Image Uploader Component https://api.dartlang.org/stable/1.24.3/dart-html/File-class.html

Mein gewünschter Endzustand ist eine Beispielbild-Datei verwenden anzuwenden.

Vielen Dank.

Antwort

2

Der Testkontext, in dem Sie laufen, ist für das Web, also nur dart: html ist verfügbar und nicht dart: io.

Wie Sie sich vorstellen können in einem Webskript, dass eine Datei willkürlich aus dem Prozess-Dateisystem geladen werden kann, könnte eine massive Sicherheitsverletzung sein. Das Web hat also eine Reihe von Einschränkungen.

Eine Menge Zeit wird der Inhalt der Datei für unsere Tests spielt keine Rolle, so dass ich so etwas tun würde:

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

Wenn der Inhalt wichtig für den Test sind Sie ein XHR nutzen könnten zu bekommen das Bild, oder versuchen Sie, die Bytes zu inline.

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

Hoffentlich kann Ihre Komponente einen Blob selbst lesen. Wenn nicht, können Sie versuchen, eine Datei mit dem 'arraybuffer' responseType stattdessen zu erstellen, aber das ist ein wenig komplizierter.

+0

Das ist gut zu wissen. Ich war nicht sicher, wie man diese Parameter erhöht. Ich werde das für meine Testfälle verwenden. – Fallenreaper

Verwandte Themen