具有依赖关系的Service源代码:

import { Injectable } from '@angular/core';@Injectable()
export class MasterService {constructor(private valueService: ValueService) { }getValue() { return this.valueService.getValue(); }
}export class ValueService {getValue() { return 'Jerry'; }
}

单元测试代码:

describe('MasterService using setup Instead of beforeEach', () => {it('#getValue should return stubbed value from a spy', () => {const { masterService, stubValue, valueServiceSpy } = setup();expect(masterService.getValue()).toBe(stubValue, 'service returned stub value');expect(valueServiceSpy.getValue.calls.count()).toBe(1, 'spy method was called once');expect(valueServiceSpy.getValue.calls.mostRecent().returnValue).toBe(stubValue);});
});

测试结果:

使用setup函数替代beforeEach函数进行Angular单元测试相关推荐

  1. matlab中randint函数替代randi函数

    文章目录 问题描述 randint函数 randi函数 问题描述 看到matlab源码中用到randint函数,但是matlabr2019a中没有randint函数,所以寻找替代函数,得到替代函数ra ...

  2. range函数python3_Python3如何使用range函数替代xrange函数

    在 Python 2 中 xrange() 创建迭代对象的用法是非常流行的.比如: for 循环或者是列表/集合/字典推导式.这个表现十分像生成器(比如."惰性求值").但是这个 ...

  3. SQL函数类型及函数使用大全

    转载地址:http://www.cnblogs.com/moss_tan_jun/archive/2010/08/23/1806861.html 一旦成功地从表中检索出数据,就需要进一步操纵这些数据, ...

  4. 对普通函数、宏函数、内联函数的作用机制的探索

    这次我们来分析的是C/C++程序员经常遇到的问题,如何在普通函数.宏函数.内联函数之间做取舍,其实它们三者之间并没有什么绝对的你好我差的说法,只要掌握了三者的作用机制的话,结合实际情况一般都能做出正确 ...

  5. [转]Angular 单元测试讲解

    Angular_单元测试 测试分类 按开发阶段划分 按是否运行划分 按是否查看源代码划分 其他 ATDD,TDD,BDD,DDD ATDD TDD BDD DDD Angular单元测试 Karma的 ...

  6. Vue3 Composition API(三)——生命周期钩子、Provide函数 和 Inject函数、封装Hook案例、setup顶层编写方式

    一.生命周期钩子 我们前面说过 setup 可以用来替代 data . methods . computed .watch 等等这些选项,也可以替代 生命周期钩子. 那么setup中如何使用生命周期函 ...

  7. python中setup函数的用法_python学习之setUp函数和tearDown函数

    1,setUp():就是在一个类中最先被调用的函数,每次执行一个函数都要先执行这个函数,有几个函数就被调用几次,与放的位置无关,随便放到哪里都会先执行这个函数 2,tearDown():就是在一个类中 ...

  8. 使用PreTranslateMessage替代钩子函数处理键盘消息

    2002年左右,我所在公司在开发基于H.323的VoIP电话系统(用了以色列一家公司的库,具体名字忘记了). 去电信科技研究院测试系统,同事发现处理键盘消息总有一些莫名其妙的问题,比如延迟或异常. 我 ...

  9. Vue3 setup语法糖勾子函数使用简易教程(上)

    Vue3 setup语法糖勾子函数使用简易教程(上) 前几天一个月薪35k的兄弟,给我推了一个人工智能学习网站,看了一段时间挺有意思的.包括语音识别.机器翻译等从基础到实战都有,很详细,分享给大家. ...

最新文章

  1. SkyWalking之高级玩法
  2. android studio sift,android - 使用SIFT / SURF通过Android Studio在Android上使用opencv进行特征提取 - 堆栈内存溢出...
  3. dpkg ihr状态_考勤机数据无法同步
  4. 五款救急的linux文件恢复软件,五款救急的Linux文件恢复软件
  5. Python之输入输出
  6. 变革中国:市场经济的中国之路
  7. 超级APP势不可挡--20190706
  8. [高项]假设情景分析VS假设分析
  9. mysql查询当前月份前两个月的数据_sql查询指定月份之前的几个月
  10. 厦门大学计算机系录取分数线贵州,厦门大学2016年在贵州各专业录取分数线
  11. scilab中文简介
  12. iframe标签控制视频大小及自动播放
  13. 找数据不求人,轻松获取你想要的数据!
  14. PythonStock(16):使用bokeh 展示,股票中的16个常用指标
  15. matlab 画bar柱状图与饼状图阴影填充
  16. truffle-contract调用合约
  17. Linux 安装RabbitMQ 图解教程
  18. linux usb驱动教学视频教程,详解linux usb host驱动编写入门
  19. 计算机扣款公式,迟到早退扣款公式怎么写?
  20. c语言 扑克牌大小,C语言实现简易扑克牌游戏

热门文章

  1. linux bash 和 sh的区别
  2. 一个静态库框架模板: iOS Universal Framework Mk 7
  3. 【转载】jQuery学习笔记
  4. nfs:client mount成功,但是进入目录时出现Permission denied
  5. gitlab基本工作原理
  6. Python基础入门笔记(二)
  7. 微服务采用何种远程调用方式?
  8. thinkPHP 空模块和空操作、前置操作和后置操作 具体介绍(十四)
  9. LaTeX中用BibTex管理参考文献
  10. localstorage || globalStorage || userData