源代码:

fixture的类型是component-fixture,里面会调用_tick方法:

具体执行的detectChange逻辑,取决于Change Detect reference:

RootViewRef,执行view方面的change detect:

class RootViewRef extends ViewRef {constructor(_view) {super(_view);this._view = _view;}detectChanges() {detectChangesInRootView(this._view);}checkNoChanges() {checkNoChangesInRootView(this._view);}get context() {return null;}
}

tickRootContext里要执行RenderComponentOrTemplate:

最后进入RefreshView的执行:

更多Jerry的原创文章,尽在:“汪子熙”:

Angular jasmine单元测试框架fixture.detectChanges的实现原理相关推荐

  1. Angular jasmine单元测试框架TestBed.createComponent的实现原理

    单元测试代码里的createComponent,是通过TestBedRender实现的: TestBedRenderer3: 获得注入的TestComponentRenderer: const res ...

  2. Angular jasmine单元测试框架里describe的实现原理

    源代码:describe函数传入的两个参数:描述信息和箭头函数: 从注释能看出,describe函数的语义:Create a group of specs (often called a suite) ...

  3. Angular jasmine单元测试框架TestBed.inject的执行原理

    单步调试这段代码: TestBed用于单元测试代码里创建Component和service实例. injectionToken即传入TestBed.inject的function: 还是delegat ...

  4. Angular jasmine单元测试框架里spyOn的创建原理

    准备针对handler的handleError方法创建spy: 保存原始方法的信息到变量originalMetho里: 利用spyFactory.createSpy创建spied版本的新方法: wra ...

  5. Angular jasmine单元测试框架里使用it函数定义single spec

    it函数接收两个参数,描述信息和包含了待测试的单元测试代码的函数: /*** Define a single spec. A spec should contain one or more {@lin ...

  6. Angular jasmine单元测试框架spied method的调用记录数据结构

    基于UnknownErrorHandler的handleError方法创建一个spy 方法: 第40行调用的是spied之后的新方法: 因为调用的是Spied之后的wrapper方法,在wrapper ...

  7. Angular jasmine单元测试框架spec的运行时数据结构

    以我单元测试里这段代码为例: 通过describe函数创建一个suite,即spec的集合: 真正的spec由函数it创建:其中expectable是human readable的字符串描述信息,描述 ...

  8. Angular jasmine单元测试框架里expect.toHaveBeenCalled的工作原理

    第120行给handler.handleError方法注入spy后,第121行代码flush HTTP Mock request会触发handler.handleError(的wrap实现)调用.第1 ...

  9. jasmine没有调用fixture.detectChanges就取不到元素的原因

    如果没有调用fixture.detectChanges, element context的innerHTML里根本就看不到button的源代码: 要获取更多Jerry的原创文章,请关注公众号" ...

最新文章

  1. IBM XIV高效存储广受公安、医疗、电信、金融等客户赞誉
  2. java 常见几种发送http请求案例
  3. Linux_正则表达式
  4. Java黑皮书课后题第6章:**6.18(检测密码)一些网站对于密码具有一些规则。编写一个方法检测字符串是否是一个有效密码。编写一个程序,提示用户输入一个密码,如果符合规则,则显示…否则显示…
  5. How is Aggregation designed
  6. Spring事务管理嵌套事务详解 : 同一个类中,一个方法调用另外一个有事务的方法
  7. 伪命题:我们来谈谈校招生起薪的问题,它对你来说重要吗?
  8. netty心跳过程中 发送消息失败_Netty 4.0 实现心跳检测和断线重连
  9. python抽学号程序_python:简单的学生管理系统
  10. KVM halt-polling机制分析
  11. html盒子如何左对齐,【图片】怎么才能让盒子里的LI标签在实现的时候左对齐?在线等急!!!!【web前端开发吧】_百度贴吧...
  12. 华为云devops认证考试课堂笔记2
  13. tiledmap 图块属性_TiledMap 组件参考
  14. Axure原型图小字体在浏览器显示变大
  15. 华为中兴为何对未来信心十足?
  16. WFA程序C#窗体间传值
  17. 执行董事和CEO有什么区别
  18. [Excel常用函数] countif countifs函数
  19. vue项目搭建以及环境配置
  20. CSP 复赛注意事项

热门文章

  1. Web API系列(三)统一异常处理
  2. 设计模式(二)之装饰器模式
  3. 我们用过的linux系统
  4. 沃信科技ERP系统容灾方案概述
  5. 黑马程序员-面向对象-06天-5(单例设计模式)
  6. WPF - 图形设计器(Diagram Designer)
  7. 数据结构学习官方代码
  8. python运算学习之Numpy ------ 数组的切片索引与循环遍历、条件和布尔数组、形状变化...
  9. java : enum、创建文件和文件夹、删除文件和文件夹、获得项目绝对路径、写入数据到excel中、java代码中两种路径符号写法、读取、写入text文件...
  10. javascript必须知道的知识要点(一)