2017-08-20 4 views
1

Datei kann aus dem Verzeichnis relativ zu der Dart-Skript-Datei, einfach als var file = new File('./fixture/contacts.json') gelesen werden.Flattern: Wie Datei zum Testen laden

Allerdings kann die Datei nicht gelesen werden flattern Test innerhalb von IDE ausgeführt.

Loading as resource (es ist nicht, da ich die Testdatendatei in der App nicht bündeln möchte) funktioniert auch nicht im Test.

Was ist ein guter Weg, Datei in flutter zu lesen (sowohl für den Kommandozeilen-Test und IDE-Test)?

Laufen flutter test ist sehr schnell. Das Testen in IntelliJ IDE ist jedoch langsam, aber es kann Debug-Breakpoints setzen und in Variablen hinein- und anzeigen. Also beide Tests sind sehr nützlich.

Antwort

0

Ich hatte einfach eine Chance und es ist einfacher als Sie vielleicht erwarten.

Erstellen Sie zunächst einen Ordner, der sich im selben Verzeichnis wie Ihre Tests befindet. Zum Beispiel habe ich einen Ordner namens test_resources erstellt.

Test resources folder structure.

Dann lassen Sie uns sagen, dass wir die folgende JSON-Datei für Testzwecke haben.

test_resources/contacts.json

{ 
    "contacts": [ 
    { 
     "id": 1, 
     "name": "Seth Ladd" 
    }, 
    { 
     "id": 2, 
     "name": "Eric Seidel" 
    } 
    ] 
} 

Test/load_file_test.dart

Wir haben es für unseren Test wie so verwenden könnte:

import 'dart:convert'; 
import 'dart:io'; 
import 'package:flutter_test/flutter_test.dart'; 

void main() { 
    test('Load a file',() async { 
    final file = new File('test_resources/contacts.json'); 
    final json = JSON.decode(await file.readAsString()); 
    final contacts = json['contacts']; 

    final seth = contacts.first; 
    expect(seth['id'], 1); 
    expect(seth['name'], 'Seth Ladd'); 

    final eric = contacts.last; 
    expect(eric['id'], 2); 
    expect(eric['name'], 'Eric Seidel'); 
    }); 
}