前端自动化测试框架jest中的mock(代码片段)

TEST_二黑 TEST_二黑     2022-11-29     296

关键词:

众所周知,在前面的代码中,我们在编写一个测试用例的时候用到了 test、expect、toBe 三个方法,在之前我们也介绍了 Jest 的基础使用、Jest 的简单配置、 Jest 中的匹配器(matchers)、 Jest 命令行工具的使用和异步代码的测试、 Jest 中的钩子函数及作用域,今天我们来说说Jest中的Mock。

函数的Mock

在我们的项目中,一个模块的方法内通常会去调用另外一个模块的方法。

在测试时,我们可能并不需要关心方法内部的执行过程和结果,只想知道它是否被正确调用即可,此时,就需要用到Jest的使用Mock函数了。

Mock函数提供的以下三种特性,在我们写测试代码时十分有用:

捕获函数调用情况

设置函数返回值

改变函数的内部实现

测试函数是否被正常调用

首先定义一个函数,用来执行传入的回调,然后导出:

// index.js

export const runCallback = callback => 
  callback();
;

然后我们需要这样测试:

// index.test.js

import  runCallback  from "./index";

test("测试 runCallback", () => 
  const func = jest.fn(); // 生成 mock 函数,捕获函数的调用
  runCallback(func); // 调用 mock 函数
  expect(func).toBeCalled(); // toBeCalled 匹配器用来检查函数是否被调用过
);

测试函数调用次数是否正确

首先定义一个函数,用来执行传入的回调,然后导出:

// index.js

export const runCallback = callback => 
  callback();
;

然后我们需要这样测试:

// index.test.js

import  runCallback  from "./index";

test("测试调用次数", () => 
  const func = jest.fn(); // 生成 mock 函数,捕获函数的调用
  runCallback(func); // 第一次调用 mock 函数
  runCallback(func); // 第二次调用 mock 函数
  runCallback(func); // 第三次调用 mock 函数
  expect(func.mock.calls.length).toBe(3); // 检查函数是否被调用了三次
);

测试函数是否返回undefined

首先定义一个函数,用来执行传入的回调,然后导出:

// index.js

export const runCallback = callback => 
  callback();
;

然后我们需要这样测试:

// index.test.js

import  runCallback  from "./index";

test("测试返回值", () => 
 const func = jest.fn(); // 生成 mock 函数,捕获函数的调用
  expect(runCallback(func)).toBeUndefined(); // 检查函数是否返回 undefined
);

jest(代码片段)

...est:Jest是由Facebook发布的开源的、基于Jasmine的JavaScript单元测试框架。Jest源于Facebook两年前的构想,用于快速、可靠地测试Web聊天应用。它吸引了公司内部的兴趣,Facebook的一名软件工程师JeffMorrison半年前又重拾这个项目,改善它... 查看详情

前端测试框架jest系列教程--mockfunctions

写在前面:  在写单元测试的时候有一个最重要的步骤就是Mock,我们通常会根据接口来Mock接口的实现,比如你要测试某个class中的某个方法,而这个方法又依赖了外部的一些接口的实现,从单元测试的角度来说我只关心我测... 查看详情

jest中的mock,jest.fn()jest.spyon()jest.mock()(代码片段)

...模块的方法内常常会去调用另外一个模块的方法。在单元测试中,我们可能并不需要关心内部调用的方法的执行过程和结果,只想知道它是否被正确调用即可,甚至会指定该函数的返回值。此时,使用Mock函数是十... 查看详情

前端自动化测试框架jest极简教程

前端自动化测试框架Jest极简教程DelightfulJavaScriptTesting.​​https://jestjs.io​​Jest是由Facebook发布的开源的、基于Jasmine的JavaScript单元测试框架。集成了Mocha,chai,jsdom,sinon等功能。具有零配置、内置代码覆盖率、强大的Mocks等特点... 查看详情

vue-cli项目集成jest单元测试(代码片段)

...c;助攻BDD(即行为驱动开发)断言库与异步测试的自动化测试框架,没有外部依赖。运行在node.js上,没有外部库,所以可以兼容所有的框架和库,但配置过程更加繁琐,使用较复杂。③、Jest由FackBook推... 查看详情

自动mock,让编写单元测试更简单(代码片段)

...#xff0c;特别是构造函数注入的广泛使用,使得编写单元测试时,需要使用Mock框架(例如Moq)生成测试类的依赖接口的"模拟"实现,并验证接口是否按预期使用。例如eShopOnContainers中的测试代码就使用了Moq&#x... 查看详情

前端-自动化测试react项目-tdd(代码片段)

TDD何为tdd(测试驱动的开发)流程:1编写测试用例2运行测试,测试用力无法通过测试3编写代码,使测试用例通过测试4优化代码,完成开发。5新增功能,重复以上步骤。以测试为驱动流程的开发好处:1长期... 查看详情

jest使用指南--mock篇(代码片段)

...模块的方法内常常会去调用另外一个模块的方法。在单元测试中,我们可能并不需要关心内部调用的方法的执行过程和结果,只想知道它是否被正确调用即可,甚至会指定该函数的返回值。此时,使用Mock函数是十... 查看详情

每次测试都是mock模块(代码片段)

我对在Jest中嘲笑如何对实现进行单元测试感到困惑。问题是我想模仿不同的预期行为。有没有办法实现这个目标?因为导入只能在文件的顶部,并且能够模拟在导入之前必须声明的内容。我也尝试传递一个本地函数,所以我可... 查看详情

jest使用指南--mock篇(代码片段)

...模块的方法内常常会去调用另外一个模块的方法。在单元测试中,我们可能并不需要关心内部调用的方法的执行过程和结果,只想知道它是否被正确调用即可,甚至会指定该函数的返回值。此时,使用Mo 查看详情

jest进行前端单元测试(代码片段)

第五章Jest进行前端单元测试单元测试是软件质量的重要保证。在Github上挑选一款软件,单元测试覆盖率是评价软件成熟度的一个重要指标。通常成熟可靠的开源产品都有完善的单元测试,并且覆盖率可以达到80%以上。本... 查看详情

前端驱动的接口数据检查文档生成mock以及接口自动化测试全方位实战效果。(代码片段)

我们项目开发时,时常面临这样的问题,在接口对接时,前后端脱钩,并行开发时相互限制拖慢开发效率。以往,这件事常常是后端主导的,后端同学输出的接口不能满足前端需求,这也是为什么graghql... 查看详情

如何使用 jest.mock 模拟 useRef 和反应测试库

】如何使用jest.mock模拟useRef和反应测试库【英文标题】:HowtomockuseRefusingjest.mockandreacttestinglibrary【发布时间】:2021-05-2517:03:28【问题描述】:我有一个测试用例,我需要模拟useRef以返回模拟当前值。我试过jest.mock但它返回一个HTM... 查看详情

jest单元测试入门(代码片段)

...单元测试?编写单元测试可以给你带来很多好处:将测试自动化,无需每次都人工测试。变更检查,当代码发生重构,可以及时发现,并做出相应的调整。列举测试用例,可以帮你了解所有的边界情况。当作文档,如果你的测试... 查看详情

前端测试框架jest系列教程--匹配器

写在前面:  匹配器(Matchers)是Jest中非常重要的一个概念,它可以提供很多种方式来让你去验证你所测试的返回值,本文重点介绍几种常用的Matcher,其他的可以通过官网api文档查看。常用的匹配方式:第一种:相等匹配,... 查看详情

前端自动化框架typescript+puppeteer+jest整合

前提:掌握Jest+Puppeteer1.Jest环境配置2.Jest-MATCHERS匹配器3.Jest-全局变量设置4.Puppeteer安装5.Puppeteer元素获取6.Puppeteer文本值获取7.Puppeteeriframe切换8.Puppeteer拖拽9.PuppeteerJs脚本执行一需要安装的插件安装包命令TypeScriptnpminstalltypescript--sa 查看详情

快速入门java单元测试——mock(代码片段)

背景为了确保代码的质量,对编写的代码进行单元测试是非常有必要的。在JAVA项目中,一般的项目结构比较复杂、依赖众多。在微服务与springboot大行其道的今天,单纯靠junit来进行单元测试一般很难完成对模块的单... 查看详情

快速入门java单元测试——mock(代码片段)

背景为了确保代码的质量,对编写的代码进行单元测试是非常有必要的。在JAVA项目中,一般的项目结构比较复杂、依赖众多。在微服务与springboot大行其道的今天,单纯靠junit来进行单元测试一般很难完成对模块的单... 查看详情