辅助模块单元测试
辅助模块单元测试准备工作通常我们会优先为一个库的辅助方法编写测试,我们会优先为 ts-axios 库的 helpers 目录下的模块编写测试。我们在 test 目录下创建一个 helpers 目录,创建一个 boot.ts 空文件,这个是因为我们上节课给 Jest 配置了 setupFilesAfterEnv 指向了这个文件,后面的章节我们会编写这个文件。 然后我们可以在控制台运行 npm test,它实际上是执行了 jest --coverage 来跑单元测试,我们会发现它会报错,没有匹配的测试文件,那是因为我们还没有在 test 目录下编写任何一个 .spec.ts 结尾的测试文件。接下来我们就来为这些辅助模块编写相应的测试。 util 模块测试test/helpers/util.spec.ts: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475...
请求取消模块单元测试
请求取消模块单元测试请求取消模块是 ts-axios 库核心流程其中一个分支,也是非常重要的模块,我们将从基础库和业务流程模块 2 个方面去编写单元测试。 Cancel 类单元测试cancel/Cancel.spec.ts: 12345678910111213141516import Cancel, { isCancel } from '../../src/cancel/Cancel'describe('cancel:Cancel', () => { test('should returns correct result when message is specified', () => { const cancel = new Cancel('Operation has been canceled.') expect(cancel.message).toBe('Operation has been canceled....
Jest 安装和配置
Jest 安装和配置Jest 安装由于我们的项目是使用 typescript-library-starter 初始化的,已经内置了 Jest 的安装,但是安装的版本却不是最新的,我们可以对 package.json 中的相关依赖版本做修改,重新安装。 1234567{ "@types/jest": "^24.0.13", "jest": "^24.8.0", "jest-config": "^24.8.0", "ts-jest": "^24.0.2", "typescript": "^3.4.5"} 注意,这里都是目前最新的版本,未来如果有版本升级的话,可以自行更新到最新版本。 更改版本后,在命令行再次执行 npm install 即可安装到相应版本。 Jest 配置在 package.json 文件中有 jest 字段,对应 Jest 配置: 1...
headers 模块单元测试
headers 模块单元测试之前我们测试了 headers 的基础方法模块,接下来我们会从业务角度测试 headers 的相关业务逻辑。 测试代码编写test/headers.spec.ts: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192import axios from '../src/index'import { getAjaxRequest } from './helper'function testHeaderValue(headers: any, key: string, val?: string): void { let found = false for (let k in headers) ...
前言
前言单元测试是前端一个很重要的方向,鉴别一个开源库是否靠谱的一个标准是它的单元测试是否完善。有了完整的单元测试,未来你去重构现有代码或者是增加新的需求都会有十足的把握不出现 regression bug。 在前面的章节,我们已经编写完成 ts-axios 库的代码,并通过 demo 的形式简单地对一些功能做了验证,但是 demo 可以走到的代码分支,覆盖的场景都是极其有限的。为了用更科学的手段保证我们代码的可靠性,我们需要去编写单元测试,并尽可能达到 99% 以上的测试覆盖率。 这门课我们会使用开源测试框架 Jest,它是 Facebook 出品的一个测试框架,相对其他测试框架,它的一大特点就是内置了常用的测试工具,比如自带断言、测试覆盖率工具,实现了开箱即用。 由于时间有限,我不会带大家一行行手敲测试代码,但我会把所有的知识点和测试代码都带大家过一遍,确保大家都能够学会。但是我希望你们在学习的过程中,能自己手敲这些测试代码,这样有助于你们学习和巩固。 通过这一章节的学习,我希望你们能够学会使用 Jest 去对 JS 库或者是 TS 库编写单元测试,并能把所学应用到你们的实际项目...
请求模块单元测试
请求模块单元测试请求模块是 axios 最基础的模块,通过一个 axios 方法发送 Ajax 请求。 jasmine-ajaxJasmine 是一个 BDD(行为驱动开发)的测试框架,它有很多成熟的插件,比如我们要用到的 jasmine-ajax,它会为我们发出的 Ajax 请求根据规范定义一组假的响应,并跟踪我们发出的Ajax请求,可以让我们方便的为结果做断言。 其实 Jest 也可以去写插件,但并没有现成的 Ajax 相关的 Jest 插件,但是 Jest 测试中我们仍然可以使用 Jasmine 相关的插件,只需要做一些小小的配置即可。 当然,未来我也会考虑去编写一个 Ajax 相关的 Jest 插件,目前我们仍然使用 jasmine-ajax 去配合我们编写测试。 jasmine-ajax 依赖 jasmine-core,因此首先我们要安装几个依赖包,jasmine-ajax、jasmine-core 和 @types/jasmine-ajax。 这个时候我们需要去修改 test/boot.ts 文件,因为每次跑具体测试代码之前会先运行该文件,我们可以在这里去初始化 ja...







