2016-04-30 2 views
2

Этот вопрос представляет собой упрощенную версию этого: Testing dart ajax HttpRequestОшибка при попытке протестировать асинхронной Dart Аякса HttpRequest

Я в основном удалены все ненужные код оставив только тест и HttpRequest.postFormData вызов.

Проблема: тест, похоже, не дождался, пока будущее не завершится. тест-код:

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

} 

По совету я return f и тест должен ждать, пока будущее не завершится. Однако это результат, который я получаю вместо этого:

~/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> 

Я думаю, что я, очевидно, неправильно понимаю что-то фундаментальное. Я пробовал несколько вариантов этого теста: async/await, expectAsync, completion, но ничего не работает. По достоинству оцените любые полезные советы.

ответ

1

Я думаю, что вы хотите это:

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

Я сделал точные изменения, предложенные и вот результат: http://pastie.org/10818961 – snitko

+0

Похоже, ваш тест не удается. И, к сожалению, ошибки Http не очень помогают. – Pacane

+0

Да, но почему это провалится? Я имею в виду, что есть только одна строка, которая использует класс dd's std lib - 'HttpRequest'. Сервер, к которому он пытается подключиться, явно получает запрос (я вижу его в журналах). Здесь буквально 0 моего собственного кода. – snitko

Смежные вопросы