首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有一个jest匹配器,它像toEqual一样工作,但将null和未定义视为相等的值?

是的,Jest提供了一个匹配器叫做toBeNullish,它可以将null和undefined视为相等的值。与toEqual不同的是,toBeNullish只关注值是否为null或undefined,而不会比较对象的属性。

toBeNullish的优势在于可以简化测试代码,特别是在处理可能为null或undefined的变量时。它可以用于各种场景,例如验证函数返回的结果是否为null或undefined,或者验证对象属性是否为null或undefined。

以下是一个示例代码:

代码语言:txt
复制
test('测试toBeNullish匹配器', () => {
  const value1 = null;
  const value2 = undefined;
  const value3 = 'hello';

  expect(value1).toBeNullish();
  expect(value2).toBeNullish();
  expect(value3).not.toBeNullish();
});

在上面的示例中,toBeNullish匹配器被用于验证value1value2是否为null或undefined,以及验证value3不是null或undefined。

推荐的腾讯云相关产品是云函数(SCF),它是一种无服务器计算服务,可以帮助开发者更轻松地构建和管理后端服务。您可以使用云函数来处理前端和后端之间的数据交互,以及执行各种计算任务。了解更多关于云函数的信息,请访问腾讯云函数产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Jest测试语法系列之Expect

,异步匹配器返回一个promise,因此你需要等待返回。...因此,你应该编写一个精确失败消息,以确保自定义断言用户具有良好开发经验。 expect.anything() 匹配除null或undefined之外任何内容。...假设我们有一个函数doAsync,接收两个回调callback1callback2,它将异步地以一个未知顺序调用它们。...此matcher递归地检查所有字段相等性,而不是检查对象标识——这也称为“深度相等”。例如,toEqualtoBe在这个测试套件中表现不同,所以所有的测试都通过。...此matcher使用“深度相等”(如toEqual()))并递归地检查所有字段相等性。 下面的示例包含一个带有嵌套属性houseForSale对象。

3.6K20

Jest测试语法系列之Matchers

关于Jest测试基础内容,可以参考之前博客:前端单元测试之Jest 本文主要讲的是匹配器(Matchers),匹配器(Matchers)是Jest中非常重要一个概念,它可以提供很多种方式来让你去验证你所测试返回...+ 2) 返回我们期望结果,通常情况下我们只需要调用expect就可以,括号中可以是一个具有返回函数,也可以是表达式。...后面的 toBe 就是一个matcher,当Jest运行时候它会记录所有失败matcher详细信息并且输出给用户,让维护者清楚知道failed原因,如果我们改成 toBe(5),将会输出错误提示...,如下图: toBe 是测试具体一个,如果需要测试对象,需要用到toEqual。...({one: 1, two: 2}); }); 真实性匹配 在实际项目测试中,有时需要区分undefined、nullfalse,这些可以使用Jest真实性匹配。

53820
  • 自动化测试 Jest 使用总结基础篇

    他可以创建测试用例,执行测试,自身还有驱动mock,且用起来也是很方便,正如 jest 官网这样描述 jestJest is a delightful JavaScript Testing Framework...验证参数是否正确 jest 提供了多种匹配器可以对不同数据类型做匹配,比如:array,string,object 等等,而它们配器分别是 toContain ,toMatch,toEqual。...同时, jest 也支持做不匹配校验,也就是反向校验。下面就是一些不同配器。 简单类型校验; 使用 tobe() 匹配器做简单类型校验,校验结果是否正确。...({name: "jest",age: 20}) }); toEqual 会进行递归检查对象或者是数组。...const params = sum.nullTest(); expect(params).toBeNull() }); 条件判断情况 number 这个类型,他也可以判断是否大于某一个

    2.7K111

    Jest + React Testing Library 单测总结

    2.2 Jest配器 Jest配器是在 expect 断言时,用来检查是否满足一定条件。...完整 Jest配器可以在 这里 查看,下面也列举一些常用配器: 匹配器 说明 .toBe(value) 相等性,检查规则为 === + Object.is .toEqual(value) 相等性...number .toBeNaN() 是否是 NaN .toMatch(regexp or String) 字符串相等性,可以填入 string 或者一个正则 .toContain(item) substring...get query 区别主要是在未找到元素时,queryBy 会返回 null,这对于我们测试一个元素是否存在时非常有帮助。...3.4 RTL + Jest配器 在 2.2 Jest配器 中可以看到 Jest 提供了一些匹配器,然而 Jest 自己提供配器很难去实现组件测试一些特殊条件,所以 RTL 自己实现了一个

    4.6K20

    从echarts-for-react源码中学习如何写单元测试

    函数后,希望返回符合我期望 expect(pick({ a: 1 }, [])).toEqual({}); expect(pick({ a: 1 }, ['b'])).toEqual...(但是我没看出来哪里timer影响到了,有知道同学望告知) ② 使用expect(A).toEqual(B),判断A返回与B相等 注意: toEqual()作用是 判断相等即可,即使是两个对象...,但它们一样,也是可以 小结 对于有返回function,就是通过判断「返回」,是否与「期望相等即可 这样好处: ① 当有新需求要扩展该函数时,可以保证该函数返回仍保持不变,进而不会影响到使用到该函数旧需求...② 当测试函数比较复杂时,非常方便,不用了解内部详细代码,只需返回符合期望即可 如何测试ReactComponent 当我写完一个React组件时,我该如何测试呢?...()toBe()区别 [1] toEqual()只要求值相等,即使是不同对象,只要相等即可 const a={} const b={} expect(a).toEqual(b); //test

    6.2K50

    公司最大内卷,偷偷做单元测试

    一位读者在看过我《理解这八大优势,才算精通单元测试》后,问我:知道单元测试有好处,实在没空写。看完文章后又想重新落实一下,有没有啥写好单元测试技巧?这位读者绝对不是第一个和我抱怨单元测试的人。...01 简洁性短函数更容易阅读理解。我们每次只测试一个逻辑点,因此测试代码应该控制在几行之内。如果是高级逻辑可能具有多个依赖项,这就需要大量样板代码来初始化模拟存根。...例如,在使用Jest进行测试时,toBe使用Object.is测试是否完全相等,而toEqualtoStrictEqual则深入比较对象,确保他们类型结构一致。...为了判断浮点数是否相等,我们需要采用一种特殊配器,这种匹配器能够忽略由于浮点数在内存中表示方式导致微小舍入误差。在Jest中,匹配器是toBeCloseTo。...虽然toEqual有时也能适用,即使是看似简单测试,如expect(0.1+0.2).toEqual(0.3)也可能无法通过。

    7910

    使用jest进行单元测试

    今年不幸与坎坷使我有很长一段时间去思考人生,不想将就了,鲁棒健壮程序,开发测试应该是分得很开,于是我选择jest去做单元测试这件事。..."test:noCache": "jest --no-cache": 顾名思义,就是设置有没有缓存,有缓存的话会快点。...(undefined) }) }) toEqual(expected) 通俗理解就是等于, 可以是类型也可以是引用类型相等。...).toEqual(110) expect(true).toEqual(true) expect(false).toEqual(false) expect(null).toEqual(null...}) 好了,到这里比较基础通用API就介绍到这里。接下来,我们通过自己编写相关代码去巩固下楼上知识,这里笔者提供两个demo,一个是关于异步获取数据断言、一个是实现一个计算器类断言。

    3.5K60

    译|通过构建自己JavaScript测试框架来了解JS测试

    “nnamdi”字符串 expect 函数接受一个要测试参数,并返回一个包含匹配器函数对象。...在这里,返回一个具有 toBe toEqual 函数对象,它们具有期望参数,用于与 expect 函数提供 value 参数匹配。...toBe 使用 === value 参数与期望参数匹配,toEqual 使用 == 测试期望。...看,我们测试框架 Jest Jasmine 一样工作仅在 Node 上运行,在下一篇文章中,我们将使其在浏览器上运行。...我们看到了如何在项目中使用 describe、it、expect 各种匹配函数来运行测试。下一次,你使用 Jest 或 Jasmine,你会更有信心,因为现在你知道它们是如何工作

    1.5K10

    React 组件测试技巧

    React 组件常见测试模式。 注意: 此页面假设你正在使用 Jest 作为测试运行器。如果你使用不同测试运行器,你可能需要调整 API,整体解决方案是相同。...--- act() {#act} 在编写 UI 测试时,可以渲染、用户事件或数据获取等任务视为与用户界面交互“单元”。...使用“假”数据 mock 数据获取可以防止由于后端不可用而导致测试不稳定,并使它们运行得更快。注意:你可能仍然希望使用一个"端到端"框架来运行测试子集,该框架可显示整个应用程序是否一起工作。...注意: React 测试库为触发事件提供了一个更简洁助手。 --- 计时器 {#timers} 你代码可能会使用基于计时器函数(如 setTimeout)来安排将来更多工作。...--- 快照测试 {#snapshot-testing} Jest 这样框架还允许你使用 toMatchSnapshot / toMatchInlineSnapshot 保存数据“快照”。

    4.9K00

    Jest 进行 JavaScript 测试

    最常见问题是“我怎么知道要测试些什么?”。如果你正在编写 Web 应用,那么一个起点就是测试应用每个页面每个用户交互。 Web 应用也由单元代码组成,如函数模块,也需要进行测试。...一个超级重要客户端需要一个函数来过滤一个对象数组。 对于每个对象,我们必须检查名为“url”属性,如果属性与给定术语匹配,那么我们应该在结果数组中包含匹配对象。...这是一个借用 Ruby 约定,用于文件标记为给定功能规范。 现在来测试吧! 测试结构第一次失败测试 现在创建你第一次Jest测试。..., "link"); 在 Jest 测试中,你应该函数调用包含在 expect 中,它与匹配器(用于检查输出Jest函数)一起进行实际测试。...包含了所有测试内容提示技巧,并深入介绍了所有不同类型测试。

    2.7K30

    JavaScript测试教程-part 2:引入 Enzyme 并测试 React 组件

    这样可以使你程序更加可靠,并且更加容易避免回归。我们在这里用了 Jest,不过 Enzyme 也可以与 Mocha Chai 之类库一起使用。...Enzyme 基础 Enzyme 是一个库,用于在测试时处理你 React 组件。由 Airbnb 开发。 设置 Enzyme 继续上一篇文章内容,假设你 Jest 已经能够工作了。...它将包含 adapter 用法,后者是一个附加库,允许你 Enzyme 与一组特定 React 版本一起使用。...这里要注意一个非常重要点:即使我们用了 Enzyme,测试运行程序仍然是 Jest。由于我们用是 expect 函数,因此可以使用各种可供调用配器函数。我已经在课程第一部分中提到了它们。...在编写单元测试时,工作得很好。在本教程后续部分中,我介绍其他类型渲染,并学习如何测试程序不同部分。它将包括快照测试模拟数据之类技术。下次见!

    1.4K50

    JavaScript 测试系列实战(一):使用 Jest Enzyme 测试 React 组件

    在这一系列实战教程中,我们手把手带你掌握 Jest、Enzyme、Cypress 等测试利器,帮助我们从 bug 沼泽中挣脱出来,成为一个无往不利高阶前端开发者!...因此这里建议直接使用 npx jest 执行测试。 编写第一组测试 每个测试文件通常有多个测试用例。Jest 允许我们通过 describe 函数对测试用例进行分组,创建了一个可以组合多个测试块。...如果这里我们第一条测试用例改为 expect(typeof Math.random()).toEqual('string') ,那么再运行 npx jest ,就会出现如下错误信息: FAIL ....初识 Enzyme:编写第一个 React 组件测试 很显然,我们不会仅仅满足于测试 divide 那样简单函数,我们希望能够测试一个 React 组件,但是一个普通 JavaScript...安装配置 Enzyme 首先安装 Enzyme 相应 React 适配器: npm install enzyme enzyme-adapter-react-16 我们需要配置一下 Enzyme,才能在

    3K10

    Jest单元测试之旅—实践总结

    它能带来好处我总结有: 单测可以确保程序得到预期结果,验证功能完备性 促使开发者写可测试代码整洁代码结构,易测试代码间接说明代码质量好坏 提前发现Bug边界处理,降低风险 重构时能保证重构正确性...其中toEqualjest提供配器jest提供了非常多配器,这里列举一些常用: toBe:使用Object.is精准匹配 toEqual:相比toBe会做深层比较,一般用于检测对象 toBeNull...这里分别使用了jest.spyOnjest.Mock两个方式对同一个方法进行3种不同编写方式测试,在实际情况中我们应该选择合适方法。...,所以并不能直接访问此类属性或方法,得益于jsdom,提供了强大web沙箱环境让我们能直接模拟真实web环境。...,本质还是一个函数,那这里我们就可以通过prototype来获取并进行模拟。

    10.3K20

    前端测试体系建设与最佳实践总结

    单元测试:是指对软件中最小可测试单元进行检查验证,通常指的是独立测试单个函数。 UI 测试:是对图形交互界面的测试。 集成测试:就是测试应用中不同模块如何集成,如何一起工作,这和它名字一致。...React Testing Library 出比较晚,倾向于支持 React 新功能,这对我来说在测试 Hooks 时是一个巨大好处。...单元测试 UI 测试文件夹统一命名为 tests,测试文件以 .test.js 为后缀 tests 文件夹与它们正在测试代码放在同级目录下,以便相对路径导入时路径更短 e2e 测试文件夹命名为...}); }); 只需要给定函数输入,之后调用函数,验证输出与期望是否一样。...但是对于一些公共组件测试还是很有必要,就像笔者前文说到过一样,当项目的代码足够复杂时,一个通用组件改动迎接你可能就是一个线上 Case。

    5.3K30

    React 造轮子系列:Icon 组件思路

    上述还是会有问题,如果使用的人也传入 className 呢,用过 Vue 就知道 Vue 是真的好,它会把传入里面的合并起来, React 就不一样了,传入会覆盖里面的,所以需要自己手动处理:...所以有人就非常聪明专门写了一个库存 classnames,这个库有多火呢,每周有300多万下载量,作用就是处理 className 情况。...('a') }) it('接受各种奇怪', ()=>{ const result = classes( 'a', undefined, '中文', false, null...expect(result).toEqual('') }) }) 使用Snapshot测试UI 这里测试 UI 相关还需要使用一个库 Enzyme , Enzyme 来自 airbnb 公司,是一个用于...image.png 解决办法: yarn add -D @types/jest 在文件开头加一句 import 'jest' 这是因为 describe it 定于位于 jest 类型声明文件中

    4.7K70

    React 造轮子系列:Icon 组件思路

    上述还是会有问题,如果使用的人也传入 className 呢,用过 Vue 就知道 Vue 是真的好,它会把传入里面的合并起来, React 就不一样了,传入会覆盖里面的,所以需要自己手动处理:...所以有人就非常聪明专门写了一个库存 classnames,这个库有多火呢,每周有300多万下载量,作用就是处理 className 情况。...', false, null ) expect(result).toEqual('a 中文') }) it('接受 0 个参数', ()=>{...Enzyme , Enzyme 来自 airbnb 公司,是一个用于 React JavaScript 测试工具,方便你判断、操纵历遍 React Components 输出。...image.png 解决办法: yarn add -D @types/jest 在文件开头加一句 import 'jest' 这是因为 describe it 定于位于 jest 类型声明文件中

    2.1K20

    对 React 组件进行单元测试

    作为一种经典开发重构手段,单元测试在软件开发领域被广泛认可采用;前端领域也逐渐积累起了丰富测试框架最佳实践。 本文按如下顺序进行说明: I. 单元测试简介 II....', function() { ... }); ... }); spy 正如 spy 字面的意思一样,我们用这种“间谍”来“监视”函数调用情况 通过对监视函数进行包装,可以通过清楚知道该函数被调用过几次...比如一个方法可能依赖另一个方法执行,而后者对我们来说是透明。好做法是使用stub 对进行隔离替换。这样就实现了更准确单元测试。...,用一个虚拟对象来创建以便测试测试方法 广义讲,以上 spy stub 等,以及一些对模块模拟,对 ajax 返回模拟、对 timer 模拟,都叫做 mock 。...虽然 Jest 本身也有一些实现 spy 等手段, sinon 使用起来更加方便。 III.

    4.3K40

    试试使用 Vitest 进行组件测试,确实很香。

    Vite是一个构建工具,旨在为现代 web 项目提供更快、更精简开发体验,开箱即用,支持常见 web 模式、glob导入 SSR 等功能。许多插件集成正在促进一个充满活力生态系统。...Jest等框架与Vite一起使用,导致ViteJest之间有很多重复配置,而 Vitest 解决了这一问题,消除了为我们应用程序编写单元测试所需额外配置。...接受一个字符串,通常是测试案例名称或描述(例如,渲染成功正确样式)一个函数,所有的检查测试在这里进行。 expect: 这个函数用于测试或创建断言。...接受一个预期为实际(字符串、数字、对象等)参数x,并使用任何支持方法对其进行评估(例如toEqual(y),检查 x 是否与 y 相同)。...我们使用 classes 函数来实现这一点,该函数返回包含该组件所有类数组。在这之后,下一件事就是使用 toEqual 函数进行比较,检查一个 X 是否等于 Y。

    2.3K20

    那些年错过React组件单元测试(上)

    Jest 关于Jest,我们参考一下其Jest 官网[1],它是Facebook开源一个前端测试框架,主要用于ReactReact Native单元测试,已被集成在create-react-app...匹配器 toBe(value):使用 Object.is 来进行比较,如果进行浮点数比较,要使用 toBeCloseTo not:取反 toEqual(value):用于对象深比较 toContain...我们在测试中也主要是用到了mock函数提供以下三种特性: 捕获函数调用情况 设置函数返回 改变函数内部实现 下面,我分别介绍这三种方法以及他们在实际测试中应用。...实际上,jest.spyOn()是jest.fn()语法糖,创建了一个被spy函数具有相同内部代码mock函数。 Snapshot 快照测试 所谓snapshot,即快照也。...总结 到这里,关于前端单元测试一些基础背景Jest基础api就介绍完了,在下一篇文章中,我会结合项目中一个React组件来讲解如何做组件单元测试。 ?

    5K20
    领券