测试镖AJAX的HttpRequest(Testing dart ajax HttpRequest)

2019-09-29 17:52发布

我不能肯定我明白这是怎么回事,当我尝试测试后的HttpRequest。 这里是我的班,没有工作的代码:

import 'dart:html';

class HttpReportAdapter {

  var    logmaster;
  int    log_level = 2;
  String url;

  HttpReportAdapter(this.url) {}

  post(r, level) {

    var data = {
      'message'   : r,
      'log_level' : log_level.toString(),
    };

    if(this.logmaster != null)
     data['log_level_string'] = this.logmaster.log_level_as_string(level);

    return HttpRequest.postFormData(this.url, data);

  }

}

在这里的测试代码:

import '../lib/report_adapters/http_report_adapter.dart';
import "package:test/test.dart";

void main() {

  var adapter;

  setUp(() {
    adapter = new HttpReportAdapter("http://localhost:4567/errors");
  });

  test("sends an ajax request and acknowledges a 200 response from the server", () {
    adapter.post("message", 2).then((_) => print("!!!!!!!!!"));
  });

}

现在,你可以看到,我还没有想测试什么,只是输出一些东西。 虽然运行此,请求确确实对http://localhost:4567/errors ,我可以看到它在我的服务器的日志。

然而, !!!!!!!! 不打印。 此外,测试失败:

This test failed after it had already completed. Make sure to use 
[expectAsync] or the [completes] matcher when testing async code.

但是,如果我强迫我的服务器发送响应前1秒入睡,测试通过,没有错误。

我将不胜感激,如果有人帮我做的这一切某种意义上,因此,写正确的测试。

Answer 1:

你需要返回的Future所以测试可以等待它完成

return adapter.post("message", 2).then((_) => print("!!!!!!!!!"));

否则,测试完成后,从服务器的响应到达之前。



文章来源: Testing dart ajax HttpRequest