https://www.digitalocean.com/community/tutorials/angular-testing-async-fakeasync

The async utility tells Angular to run the code in a dedicated test zone that intercepts promises.

async可以让Angular在一个专属的test zone里执行代码,该zone可以截获promises.

whenStable: allows us to wait until all promises have been resolved to run our expectations.

当所有的promises都resolved之后,whenStable触发,能够进行expectation的evaluation了。

看个例子:

import { Component } from '@angular/core';@Component({selector: 'app-root',template: `<h1<{{ title }}</h1>set title`
})
export class AppComponent {title: string;setTitle() {new Promise(resolve => {resolve('One crazy app!');}).then((val: string) => {this.title = val;});}
}

When the button is clicked, the title property is set using a promise.

如何测试:

// ...our imports heredescribe('AppComponent', () => {let fixture: ComponentFixture<AppComponent>;let debugElement: DebugElement;beforeEach(async(() => {TestBed.configureTestingModule({declarations: [AppComponent],providers: [IncrementDecrementService]}).compileComponents();fixture = TestBed.createComponent(AppComponent);debugElement = fixture.debugElement;}));it('should display title', async(() => {debugElement.query(By.css('.set-title')).triggerEventHandler('click', null);fixture.whenStable().then(() => {fixture.detectChanges();const value = debugElement.query(By.css('h1')).nativeElement.innerText;expect(value).toEqual('One crazy app!');});}));
});

使用Async对Angular异步代码进行单元测试相关推荐

  1. 使用FakeAsync对Angular异步代码进行单元测试

    The problem with async is that we still have to introduce real waiting in our tests, and this can ma ...

  2. 用Async函数简化异步代码

    Promise 在 JavaScript 上发布之初就在互联网上流行了起来 - 它们帮开发人员摆脱了回调地狱,解决了在很多地方困扰 JavaScript 开发者的异步问题.但 Promises 也远非 ...

  3. 用 Async 函数简化异步代码

    Promise 在 JavaScript 上发布之初就在互联网上流行了起来 - 它们帮开发人员摆脱了回调地狱,解决了在很多地方困扰 JavaScript 开发者的异步问题.但 Promises 也远非 ...

  4. java 单元测试 异步_java - 如何使用CountdownLatch对异步代码进行单元测试同步 - 堆栈内存溢出...

    我通过代码修改了公开我使用包保护函数注册的回调,如下所示: public void SomeClass { private final CountDownLatch latch = new Count ...

  5. 使用 Async / Await 来编写简明的异步代码

    原文链接:https://blog.patricktriest.com/what-is-async-await-why-should-you-care/ 复制代码 停止书写回调函数并爱上ES8 以前, ...

  6. 避免回调地狱的解决方案 async/await:用同步的方式去写异步代码

    文章目录 前言 一.引入异步编程 二.常见处理异步编程的几种方式 1.Generator函数 2.Promise函数 3.async/await 总结 前言 这篇文章主要给大家分享一下,自己关于异步编 ...

  7. 【测试与自动化】介绍-框架-Jest-覆盖率-异步代码-e2e-Vue测试

    测试与自动化 软件测试和自动化测试介绍 前端自动化测试框架 使用Jest编写单元测试 统计测试覆盖率 使用Jest测试异步代码 使用Cypress进行e2e测试 测试 Vue 项目 软件测试和自动化测 ...

  8. Atitit. Async await 优缺点 异步编程的原理and实现 java c# php

    Atitit. Async await 优缺点 异步编程的原理and实现 java c# php 1. async & await的来源1 2. 异步编程history1 2.1. 线程池 2 ...

  9. ASP.NET WebForm中用async/await实现异步

    1. 在.aspx中添加异步标记 <%@ Page Language="C#" Async="true"%> 2. 在.aspx.cs或者.ascx ...

最新文章

  1. Linxu安装Tomcat与Jdk并卸载自带OpenJdk
  2. Vector Enumeration
  3. ITK:创建一个二进制球结构元素
  4. 2020年跨行业跨领域工业互联网平台
  5. 云+X案例展 | 传播类:九州云 SD-WAN 携手上海电信,助力政企客户网络重构换新颜...
  6. consul的安装配置 一centos7环境
  7. python实例变量命名规则_Java,Python的一些命名规范
  8. Shell脚本学习-阶段五-MYSQL101条调优
  9. CrtmpServer 接收推送视频流 注册流基本流程
  10. ERP系统容灾方案对ERP生产系统的影响
  11. SQL常见错误及处理方法
  12. Linux的磁盘系统和文件系统显示的文件大小为什么不一样(du指令和ls指令的区别)...
  13. tns无监听程序_成ORA-12560: TNS: 协议适配器错误的问题的原因
  14. Java serialVersionUID
  15. HTML5期末大作业:基于HTML+CSS+JavaScript实现中国风文化传媒企业官网源码
  16. 去除加粗的css,CSS去掉b加粗和strong加粗标签样式
  17. 千锋教育python2104期总结day14
  18. 八数码问题-8puzzle
  19. 如何查看文件的 MD5值?
  20. 第三章 总线和存储器

热门文章

  1. nginx反向代理缓存服务器构建
  2. DHCP服务_学习笔记
  3. swift和oc区别----属性部分(参考官方swift2.1文档)
  4. [zz]为 lua 封装 C 对象的生存期管理问题
  5. 经典SQL语句大全(技巧篇)
  6. 编译通过,但在运行时报Resolution of the dependency failed
  7. mutt的实现, mutt+msmtp+getmail配置
  8. 2008年初看的书[带简评]
  9. 什么是卷影复制,卷影服务是什么
  10. Microsoft.TeamFoundation.VersionControl.Client.dll的位置