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

浅谈前端测试

这里不赘述 node 环境   推荐测试框架 jest   jest 是 FB 杰作之一,方便各种场景 js 代码测试,这里选择 jest 是因为确实方便   使用方法及配置信息可以去官方文档   ...,我们关注点应该在于读取文件错误时能否及时抛出异常,以及 console.log() 是否如预期执行   对应到测试 const getFile = require('....readFile error') })  expect(getFile()).toThrow()  expect(global.console.log).not.toBeCalled()  })   读取文件失败测试就好理解多...,错误情况程序是否有异常处理,逻辑是否正确等。...,并且覆盖率 100%,的确不会有人蠢到把代码改成这样,只是一个例子,实际上逻辑会比这个复杂多   那就聊一聊解决方案   mock 数据随机化,每次测试生成随机 list 进行测试,现有库 mockjs

1.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

eslint 从0到1

简介 ESlint 可组装javaScript和JSX检查工具, 提供一个插件化javascript代码检测工具。 背景 平常开发中,难免出现笔误,书写不规范,多人开发代码风格迥异等问题。...eslint 版本7.29.0 DEMO目录 .eslintrc.js .eslintignore src index.ts 安装 // 全局安装 npm i -g eslint // 本地安装,本地安装无法使用...常用命令行 -c 指定配置文件 -- env 指定环境 --rule 指定规则 -- fix 是自动否修复错误 其他 .eslintrc.* 配置文件 通过配置文件控制文件校验规则。...'semi': 'off', // 关闭分号结尾 'no-unused-vars' 'warn', // 未使用变量,警告提示 'no-undef': 'error', // 未定义或隐式全局变量...某些情况下, 我们需要针对不同类型文件设置不同校验规则, 就可以用改该属性 overrides: [ { files: [ // 为测试文件设置 jest 环境

1.7K20

JavaScrip最容易犯十大错误及其避免方法()

Uncaught TypeError: Cannot read property 如果你是一个javascript开发者,你肯定看到过此错误 读取属性或调用方法对象未定义 这可能由于许多原因而发生,...反过来,这意味着ItemList将项目定义为未定义,并且您在控制台中收到错误 - “Uncaught TypeError:无法读取未定义属性’map’”。 这很容易解决。...Uncaught TypeError: Cannot set property 当我们尝试访问未定义变量时,它总是返回undefined,我们无法获取或设置undefined任何属性。...在这种情况下,应用程序将抛出“Uncaught TypeError无法设置未定义属性”。 10....ReferenceError: event is not defined 当您尝试访问未定义或超出当前范围变量时,将引发此错误。 您可以在Chrome浏览器中轻松测试它。

11610

JavaScript 测试系列实战(二):深层渲染和快照测试

因此,之前失败测试现在就会通过。 由于 mount 函数会模拟实际 DOM,渲染成本更高,因此运行测试会花费更多时间。...我们可以通过调整 testEnvironment 属性更改。 快照测试 快照测试Jest 一大招牌功能。所谓快照,可以简单地理解成是我们应用一个**“代码截图”**。...当我们再次运行快照测试时,Jest 会将新快照与旧快照进行比较,如果两者不一致,测试就会失败,从而帮助我们确保用户界面不会发生意外改变。...如果我们要更新所有失败快照,可以使用 -u 标志(别名为 --updateSnapshot) 来运行 Jest。...首先运行 npm test ,然后输入 i 以交互方式更新失败快照。官方 Jest 文档提供了一个动画来展示这个过程: ?

2.1K20

web前端好帮手 - Jest单元测试工具

明确功能点测试不要用快照,比如下面我们明确要测试setName方法是否能成功设置name属性时,这种情况不应该用快照: test("setName方法改变name属性“, () => { let...expect(person.name).toBe("shanelv") }); 这里我们不需要使用快照记录person实例其他属性,只需要测试name属性,所以明确测试点用明确代码去覆盖,这种场景不要用快照...具体看istanbul文档介绍 注意,一般来说,无法覆盖情况都是因为功能代码编写方式问题,尽量尝试改进功能代码编写方式来满足测试需求,避免跳过测试覆盖统计。...首先,由于Jest启动多个进程,并发地跑测试,我们使用node-inspect方式去跑断点调试时,chrome://inspect页面上断点不会被中断,导致我们无法断点调试。...而相反想一步写一步代码,可能容易出现api参数反复修改、功能和实际情况不匹配、边界情况考虑不周等来回返工情况。

4.9K40

如何做前端单元测试

前端为什么需要单元测试? 必要性:JavaScript 缺少类型检查,编译期间无法定位到错误,单元测试可以帮助你测试多种异常情况。 正确性:测试可以验证代码正确性,在上线前做到心里有底。...常见单元测试工具 目前用最多前端单元测试框架主要有 Mocha (https://mochajs.cn/)、Jest (https://www.jestjs.cn/),但我推荐你使用 Jest,因为.../get'; test('测试嵌套对象存在可枚举属性 line1', () => { expect(get({ id: 101, email: 'jack@dev.com',.../sum'; test('sum(2, 4) 不等于 5', () => { expect(sum(2, 4)).not.toBe(5); }) .toEqual 匹配器会递归检查对象所有属性属性值是否相等...,否则会因为函数抛出错误导致该断言失败

3.2K20

Jest测试语法系列之Expect

expect(bestLaCroixFlavor()).toBe('grapefruit'); }); 在上面的例子中,toBe是matcher函数,为了帮助你测试不同内容,Jest提供了很多不同...pass指示是否存在匹配,message提供了一个没有参数函数,在失败时返回错误消息。因此当pass为false时,当expect(x). yourmatcher()失败时,消息应该返回错误消息。...当pass为true时,消息应该返回expect(x).no . yourmatcher()失败错误消息。 this.equals(a, b) 如果两个对象具有相同值(递归地),则返回true。...,错误消息应该向用户提供必要尽可能多信号,以便用户能够快速地解决问题。...Jest React测试框架之enzyme Jest测试语法系列之Globals Jest测试语法系列之Matchers

3.5K20

JavaScript 编程精解 中文第三版 八、Bug 和错误

其他东西,比如调用不是函数东西,或者在未定义值上查找属性,会导致在程序尝试执行操作时报告错误。...当你破坏某些东西时,你会立即注意到,而不是在稍后时间里随机地碰到它。 测试通常采用小标签程序形式来验证代码某些方面。...幸运是,有些软件通过提供适合于表达测试语言(以函数和方法形式),并在测试失败时输出丰富信息来帮助你构建和运行测试集合(测试套件,test suite)。...该信息存储在stack属性中,对于调用问题有很大帮助,我们可以从堆栈跟踪信息中得知问题发生精确位置,即问题具体出现在哪个函数中,以及执行失败为止调用其他函数链。...(当你读取一个不存在数组属性时候),而是在你滥用它时立即干掉你程序。

1.2K100

1000多个项目中十大JavaScript错误以及如何避免

当你读取一个属性或调用一个未定义对象方法时,Chrome 中就会报出这样错误。 [image.png] 导致这个错误发生原因有很多,常见一种情况是在渲染 UI 组件时,不正确地初始化状态。...这是在 Safari 中读取属性或调用未定义对象上方法时发生错误,这与 Chrome 上述错误基本相同,只是 Safari 使用不同错误消息。...这是在 Safari 中读取属性或调用空对象上方法时发生错误。...出现这种情况绝大部分原因是IE无法将当前名称空间内方法绑定到this关键字。例如,如果你有 JS Rollbar 方法命名空间 isAwesome。...TypeError: Cannot Read Property ‘length’ 这是 Chrome 中发生错误,因为读取未定义长度属性变量。

6.2K30

QQ音乐商业化Web团队前端工程化实践总结

不同于JS,CSS本身不具有高级编程属性无法使用变量、运算、函数等,无法管理依赖,全局作用域使得在编写CSS样式时候需要更多人工去处理优先级问题,样式名还有压缩极限问题,为此,出现了很多“编译工具...husky 如果我们把Lint放在了持续集成CI阶段,就会遇到这样一个问题:CI系统在Lint时发现了问题导致构建失败,这个时候我们需要根据错误重新修改代码,然后重复这个过程直到Lint成功,整个过程可能会浪费掉不少时间...,我们只有在运行时才知道变量到底是什么类型,无法在编译阶段作出任何类型错误提示,同时由于函数参数类型不确定性,编译器编译结果很可能无法被复用,比如下面的例子中,在执行add(1,2)时对add函数编译结果无法直接被下面的...“上次修复 bug 怎么又出现了 ” ——单元测试能够避免代码出现回归,编写完成后,可快速运行测试。...这些语义化方法会返回测试结果,要么成功、要么失败。Node内置断言库assert,常见断言库还有有chai.js、should.js。

4.2K112

1000个项目中前10名JavaScript错误介绍

当你读取一个未定义对象属性或调用其方法时,这个错误会在 Chrome 中出现。 您可以很容易在 Chrome 开发者控制台中进行测试(尝试)。...TypeError: ‘undefined’ is not an object 这是在 Safari 中读取属性或调用未定义对象上方法时发生错误。...TypeError: null is not an object 这是在 Safari 中读取属性或调用空对象上方法时发生错误。...TypeError: Cannot read property ‘length’ 这是 Chrome 中发生错误,因为读取未定义变量长度属性。...Uncaught TypeError: Cannot set property 当我们尝试访问一个未定义变量时,它总是返回 undefined,我们不能获取或设置任何未定义属性

6.2K10

10 种最常见 Javascript 错误

当你读取一个未定义对象属性或调用其方法时,这个错误会在 Chrome 中出现。 您可以很容易在 Chrome 开发者控制台中进行测试(尝试)。 ?...TypeError: ‘undefined’ is not an object 这是在 Safari 中读取属性或调用未定义对象上方法时发生错误。...TypeError: null is not an object 这是在 Safari 中读取属性或调用空对象上方法时发生错误。...TypeError: Cannot read property ‘length’ 这是 Chrome 中发生错误,因为读取未定义变量长度属性。 您可以在 Chrome 开发者控制台中进行测试。...Uncaught TypeError: Cannot set property 当我们尝试访问一个未定义变量时,它总是返回 undefined,我们不能获取或设置任何未定义属性

6.8K80

【编程基础】C语言内存使用常见问题

读越界表示读取不属于自己数据,如读取字节数多于分配给目标变量字节数。若所读内存地址无效,则程序立即崩溃;若所读内存地址有效,则可读到随机数据,导致不可预料后果。...写越界亦称“缓冲区溢出”,所写入数据对目标地址而言也是随机,因此同样导致不可预料后果。 内存越界访问会严重影响程序稳定性,其危险在于后果和症状随机性。...内存越界通常依赖于测试环境和测试数据,甚至在极端情况下才会出现,除非精心设计测试数据,否则工具也无能为力。此外,工具本身也有限制,甚至在某些大型项目中,工具变得完全不可用。...编译器优化这段代码时,若addr地址数据读取太频繁,优化器会将该地址上值存入寄存器中,后续对该地址访问就转变为直接从寄存器中读取数据,如此将大大加快数据读取速度。...一旦链接错误库,则可能出现某个内存管理器中分配内存,在另一个内存管理器中释放问题。

3.2K60

使用Jest测试包含setTimeout调用函数踩坑记录

:当任务执行失败时候,等待3s后重试,如此直到执行成功为止。...为了测试执行失败时有发生重试,我编写了如下测试用例: // job-queue.test.js const MockJob = jest.fn(() => { return { id: 0...Fake timer 这样修改之后测试用例虽然可以通过了,但如果将上面的3s改成6s,我们就会遇到超时错误: [image-20210823195537643.png] 这是因为Jest每个测试用例默认只给了...虽然从错误信息中我们知道可以通过jest.setTimeout来修改这个默认超时时间,但这个测试用例在实际运行时候也的确需要等待6s,如果我们有什么测试用例需要等待几分钟甚至几小时,那总不能在CI上卡个几小时等待用例通过吧...注意我们此时使用是fake timer,因此是无法使用await delay(0)这个方案,因此这会导致我们测试用例在等待setTimeout被回调,而fake timersetTimeout又在等待

6.6K60

Vue 业务系统如何落地单元测试

单元在质量保证中是非常重要环节,根据测试金字塔原理,越往上层测试,所需测试投入比例越大,效果也越差,而单元测试成本要小多,也更容易发现问题。...将Jest Command替换为 test:unit,使用vue脚手架提供 test:unit 进行单元测试。 ?...落地单元测试 ❌ 直接对一个较大业务组件添加单元测试,需要模拟一系列全局函数,无法直接运行。...element) }) resolve() } else { reject('获取事件属性失败...回顾 定义 安装与使用(安装、调试、git拦截、测试报告) 常用API(jest、vue组件) 落地单元测试(拆分关键模块加单测) 演进:构建可测试单元模块(设计原则、重构) 可维护单元模块(代码规范

3.9K30

前端工程化实践总结 |

不同于JS,CSS本身不具有高级编程属性无法使用变量、运算、函数等,无法管理依赖,全局作用域使得在编写CSS样式时候需要更多人工去处理优先级问题,样式名还有压缩极限问题,为此,出现了很多“编译工具...husky 如果我们把Lint放在了持续集成CI阶段,就会遇到这样一个问题:CI系统在Lint时发现了问题导致构建失败,这个时候我们需要根据错误重新修改代码,然后重复这个过程直到Lint成功,整个过程可能会浪费掉不少时间...实现这个功能,在package.json中示例: 类型检查 JavaScript是非常灵活,这得益于它弱类型语言特点,但也是因为这个原因,我们只有在运行时才知道变量到底是什么类型,无法在编译阶段作出任何类型错误提示...“上次修复 bug 怎么又出现了 ” ——单元测试能够避免代码出现回归,编写完成后,可快速运行测试。...这些语义化方法会返回测试结果,要么成功、要么失败。Node内置断言库assert,常见断言库还有有chai.js、should.js。

4.4K41

在 ts + Jest 单元测试中 debugging

温馨提示:因微信中外链都无法点击,请通过文末 “阅读原文” 到技术博客中完整查阅版; 本文简要介绍了如何在 Jest 单元测试中利用 Chrome Node DevTools 来辅助调试 1、背景 代码是...TS 写 所测功能无 UI 界面,且出现 bug 初步定位到是循环体内部问题,功能较为复杂 用 console 式 debug 效率太低,需要打断点式调试 在 Jest 单测中进行 debugger...2、步骤 在认为可能失败并输入测试中插入一个 debugger。...Jest运行测试用例特点是多进程并发运行不同测试案例,达到快速效果。但是这样对调试来说是没法进行。这个参数保证了使用一个进程运行所有代码。 接下来就可以开心 debug 了: ?...Studio Code:文中给出针对 ts + jest launch.json 配置项,可以借鉴一下 使用jest+enzyme进行react项目测试 - debug篇:虽说是 2017 年文章

3.9K30
领券