unit-testing - 我们如何使用angulardart中的测试包对异步函数进行单元测试?

标签 unit-testing asynchronous testing dart angular-dart

我尝试使用 angulardart 代码创建异步函数,该函数将调用内部服务,而服务将从测试 url 返回响应。我将如何模拟特定函数 getUserDetails()。

login_component.html

<div class="container">
   <button type="button" (click)="getUserDetails()">Click me to see 
     details
   </button>
</div>
<div *ngFor="let user of userDetails">{{user.id}}</div>

login_component.dart:

Future<Null> getUserDetails() async {
 try {
   userDetails = await _loginService.userDetails();
   print(userDetails);
 } catch (e) {
   errMsg = e.toString();
 }
}

login_service.dart:

Future<dynamic> userDetails() async {
    var _url = 'https://jsonplaceholder.typicode.com/users';
    try {
      var res = await _http.get(_url);
      var response = _extractData(res).map((value) => new 
      List.fromJson(value)).toList();
      return response;
       } catch (e) {
         print(e);
        }
}
dynamic _extractData(Response resp) => JSON.decode(resp.body);

list.dart

class List {
  int id;
  String name;
  List(this.id, this.name);
  factory List.fromJson(Map<dynamic, dynamic> list) =>
  new List(list['id'], list['name']);
  Map toJson() => {'id': id, 'name': name};
}

请帮我找出解决办法。另外,我如何检查 angulardart 中的测试代码覆盖率?

最佳答案

您的问题涉及多个方面和维度,无法简明扼要地解决所有问题。但这里有一些准则:

  • “我们如何使用测试包进行单元测试异步函数...?”

    test package统一支持写同步 和异步测试。有关详细信息,请参阅包自述部分 在 Asynchronous Tests .

  • “我们如何在 AngularDart 中进行单元测试?”

    • 要测试 AngularDart 服务,您可以使用 使用 test package仅。

    • 您可以使用 AngularDart 组件 编写测试 angular_test的帮助包。


    查看 AngularDart Testing Guide关于 Component Testing了解详情。

  • “我将如何模拟特定函数 getUserDetails()”

    我假设您想测试您的组件,在这种情况下您不想模拟组件的 getUserDetails() 方法。相反,您可以模拟服务它使用的 (LoginSerice)。

    Mockito包使得创建模拟变得非常容易。 测试指南部分 Services: local, external, mock, real 解释如何编写和使用模拟服务。

  • “我如何检查测试代码覆盖率......?”

    我知道的其他一些 Dart 项目使用 coveralls.io , 但我没有亲自使用过它。

我上面给出的文档链接是针对 Angular 5 的。 Angular 4 测试指南是 here .

关于unit-testing - 我们如何使用angulardart中的测试包对异步函数进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50719520/

相关文章:

performance - 有谁知道在指定延迟和吞吐量的同时模拟 Web 服务的方法?

reactjs - 如何避免 React Jest 测试中的 "False positive"覆盖率

angularjs - 我应该以 Angular 模拟所有外部服务吗?

objective-c - 在 UIViewController 上设置只读 navigationController 属性以进行模拟

unit-testing - 单元测试React组件功能

F# 异步问题

java - 理解 Java Completablefuture 的行为

javascript - 变量在 Angular $resource 函数的回调中突然变得未定义

go - 在 Golang 中测试 Log 语句输出

javascript - 如何关闭 Meteor 中的 Velocity 单元测试?