This question is a simplified version of this one: Testing dart ajax HttpRequest
I basically removed all the unnecessary code leaving only the test and HttpRequest.postFormData
call.
The problem: test doesn't seem to wait until the Future completes. The test code:
# 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;
});
}
As per advice, I return f
and the test is supposed to wait until the Future completes. However, this is the output I'm getting instead:
~/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>
I think I clearly am misunderstanding something fundamental. I've tried multiple variations of this test, with async/await
, expectAsync
, completion
, but nothing seems to be working. Would appreciate any good advice.
I think what you want is this: