toBeInstanceOf(class):判断是不是 class 的实例 resolves:用来取出 promise 为 fulfilled 时包裹的值,支持链式调用 rejects:用来取出 promise 为 rejected 时包裹的值,支持链式调用 toHaveBeenCalled():用来判断 mock function 是否被调用过 toHaveBeenCalledTimes(number):用来判断 mock function 被调用的次数 asserti...
在写单元测试的时候有一个最重要的步骤就是Mock,我们通常会根据接口来Mock接口的实现,比如你要测试某个class中的某个方法,而这个方法又依赖了外部的一些接口的实现,从单元测试的角度来说我只关心我测试的方法的内部逻辑,我并不关注与当前class本身依赖的实现,所以我们通常会Mock掉依赖接口的返回,因为我们的测试重点在...
还可以设置自动 mock,jest.config.js中打开automock: true,程序会自动在mocks文件夹下找同名文件,省去了手动调用jest.mock('./mock'); 4. mock - function 模拟函数调用 对于单元测试,无需关心外部传入的函数的实现,使用jest.fn生成一个 mock 函数,可以捕获函数的调用和返回结果,以及this和调用顺序,例如测试mock...
// jest.config.ts /** * 每个配置属性的详细说明,请访问: * https://jestjs.io/docs/configuration */ import type {Config} from 'jest'; const config: Config = { // 所有导入模块应自动进行模拟 // automock: false, // 在测试失败 `n` 次后停止运行 // bail: 0, // Jest 应该将缓存依赖...
...automock: false, testRunner: 'jasmine2', // 测试文件执行前会先执行该文件,用来给Jest测试函数加代理从而收集测试用例 setupFilesAfterEnv...const spyOk = jest.spyOn(comp.instance,"getData");; const spyCancel = jest.spyOn(comp.instance...expect(spyCancel).toHaveBeenCalled(); expect(...
automock Boolean(默认值:false) 这个配置项用来配置是否将测试文件中所有引入的模块自动变成模拟的模块 如果开启的话,就测试文件中的模块的实现都会被重新实现,但会保留 Api 接口 比如我们要测试某个模块中的某个函数功能: // mod.ts module.exports = () => 1 // index.test.tsx const aotoMockFn = req...
// users.jsimportaxiosfrom'axios';classUsers{staticall(){returnaxios.get('/users.json').then(resp=>resp.data);}}exportdefaultUsers; 现在,为了在不实际碰到API的情况下测试这个方法(从而创建慢而脆弱的测试),我们可以使用jest.mock(…)函数来自动模拟axios模块。
注: 当我们把配置项 automock 修改为 true 后,jest就会开启自动模拟功能,就算测试文件中没有声明模拟代码,jest依然会去自动查找根目录中是否有mocks文件的存在,mocks文件夹下是否有相对应的demo.js文件。如果有,那么在使用 import { fetchData } from ‘./demo’ 引入demo时,会拿mocks下的demo代替我们写的业务代...
在写单元测试的时候有一个最重要的步骤就是Mock,我们通常会根据接口来Mock接口的实现,比如你要测试某个class中的某个方法,而这个方法又依赖了外部的一些接口的实现,从单元测试的角度来说我只关心我测试的方法的内部逻辑,我并不关注与当前class本身依赖的实现,所以我们通常会Mock掉依赖接口的返回,因为我们的测试重点在...
Jest 是一款 Facebook 开源的 JS单元测试框架,具有 auto mock、自带 mockAPI、前端友好(集成JSDOM)、环境隔离等特点和优势。Jest 默认使用 Jasmine 语法,支持直接使用 Promise 和 async/await 进行异步测试,支持对 React 组件进行快照监控, 扩展和集成 Babel 等常用工具集也很方便。目前 Jest 已经在 Facebook 开源...