2016-04-30 8 views
2

Diese Frage ist eine vereinfachte Version dieses: Testing dart ajax HttpRequestFehler beim Versuch, eine Asynchron-Dart Ajax zu testen Httprequest

ich im Grunde nur den Test verlassen alle unnötigen Code entfernt und HttpRequest.postFormData Anruf.

Das Problem: Test scheint nicht zu warten, bis die Zukunft abgeschlossen ist. Der Testcode:

# http_report_adapter_test.dart 

import "package:test/test.dart"; 
import 'dart:html'; 

void main() { 

    test("sends an ajax request and acknowledges a 200 response from the server",() { 
    var f = HttpRequest.postFormData("http://localhost:4567/errors", { 'hello': 'world'}); 
    f.then((_) => print("!!!!!!!")); 
    return f; 
    }); 

} 

Per Beratung, ich return f und der Test soll warten, bis die Zukunft abgeschlossen ist. Jedoch ist dies die Ausgabe, die ich stattdessen bekomme:

~/Work/my_libs/dart/logmaster master$ dtest-d -n "sends an ajax request and acknowledges a 200 response from the server" 
00:05 +0 -1: test/http_report_adapter_test.dart: sends an ajax request and acknowledges a 200 response from the server 
    [object XMLHttpRequestProgressEvent] 
    dart:html       HttpRequest.postFormData 
    http_report_adapter_test.dart 14:25 main.<fn> 

    [object XMLHttpRequestProgressEvent] 
    dart:html       HttpRequest.postFormData 
    http_report_adapter_test.dart 14:25 main.<fn> 

Ich glaube, ich verstehe eindeutig etwas Grundlegendes. Ich habe mehrere Variationen dieses Tests versucht, mit async/await, expectAsync, completion, aber nichts scheint zu funktionieren. Würde mich über jeden guten Rat freuen.

Antwort

1

Ich denke, was Sie wollen, ist dies:

test("sends an ajax request and acknowledges a 200 response from the server",() async { 
    await HttpRequest.postFormData("http://localhost:4567/errors", { 'hello': 'world'}); 

    print("hello!"); // or expect(x, y); 
    }); 
+0

ich die genauen Änderungen vorgenommen haben Sie vorgeschlagen und hier ist die Ausgabe: http://pastie.org/10818961 – snitko

+0

Sieht aus wie Ihr Test versagt. Und leider helfen die HTTP-Fehler nicht viel. – Pacane

+0

Ja, aber warum würde es scheitern? Ich meine, es gibt nur eine Zeile, die Dart's Standard-Lib-Klasse benutzt - 'HttpRequest'. Der Server, mit dem die Verbindung hergestellt werden soll, erhält die Anfrage eindeutig (ich kann es in den Protokollen sehen). Es gibt buchstäblich 0 von meinem eigenen Code hier. – snitko