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

带你入门前端工程(四):测试

其中单元测试使用的测试框架为 Jest,E2E 使用的测试框架为 Cypress。...(abs(-1)).toBe(1) expect(() => abs('abc')).toThrow(TypeError) // 类型错误 }) 现在我们需要测试一下 abs() 函数:在 src...Funcs:函数覆盖率,是否执行了每个函数。 Lines:行覆盖率,是否执行了每一行代码。 可能有人会有疑问,1 和 4 不是一样吗?其实不一样,因为一行代码可以包含好几个语句。...本章将使用 Cypress 讲解 E2E 测试。 Cypress 在进行 E2E 测试,会打开 Chrome 浏览器,然后根据测试代码对页面进行操作,就像一个正常的用户在操作页面一样。...为了统一脚本的使用规范,最好将 node server.js 命令替换为 npm run start: "scripts": { "test": "jest --coverage test/",

1.5K10

异步函数中的异常处理及测试方法

每日前端夜话0x18 每日前端夜话,陪你聊前端。 每天晚上18:00准时推送。...你将学到什么 通过后面的内容你将学到: 如何从 Javascript 的异步函数中抛出错误 如何使用 Jest 测试来自异步函数的异常 要求 要继续往下读你应该: 对 Javascript 和 ES6...有基本的了解 安装 Node.Js 和 Jest 如何从 Javascript 的常规函数中抛出错误 使用异常而不是返回码(清洁代码)。...你可以从函数中抛出错误,可以参照以下示例: ? 这是对它的测试(使用Jest): ? 也可以从 ES6 的类中抛出错误。在 Javascript 中编写类,我总会在构造函数中输入意外值。...以下是在Jest中测试异常的规则: 使用 assert.throws 来测试普通函数和方法中的异常 使用 expect + rejects 来测试异步函数和异步方法中的异常 如果你对如何使用 Jest

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

对 Vue-Router 进行单元测试

比如,当渲染整个 组件,正赶上渲染树很大,包含了许多组件,一层层的组件又有自己的子组件。这么些个子组件都要触发各种生命周期钩子、发起 API 请求什么的。...使用了下面的写法后,以上测试也将能通过: jest.mock("@/components/NestedRoute.vue", () => ({ name: "NestedRoute", render...: h => h("div") })) 使用 Mock Router 有时真实路由也不是必要的。...在组件中声明 要确保这些运作正常,一般是集成测试的工作,因为需要一个使用者从一个理由导航到另一个。但也可以用单元测试检验导航 guards 中调用的函数是否正常工作,并更快的获得潜在错误的反馈。...bustCache() } next() }) export default router 在单元测试中,你可能想导入 router 实例,并试图通过 router.beforeHooks[0]

2.2K10

Vue Router 之单元测试

比如,当渲染整个 组件,正赶上渲染树很大,包含了许多组件,一层层的组件又有自己的子组件。这么些个子组件都要触发各种生命周期钩子、发起 API 请求什么的。...使用了下面的写法后,以上测试也将能通过: jest.mock("@/components/NestedRoute.vue", () => ({ name: "NestedRoute", render...: h => h("div") })) 使用一个 Mock Router 有时真实路由也不是必要的。...要确保这些运作正常,一般是集成测试的工作,因为需要一个使用者从一个路由导航到另一个。不过,你也可以用单元测试检验导航 guards 中调用的函数是否正常工作,并更快的获得潜在 bugs 的反馈。...bustCache() } next() }) export default router 在你的单元测试中,你 可能 想导入 router 实例,并试图通过 router.beforeHooks[0]

1.9K10

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

0开始搭建,大部分只需要修改配置即可快速使用。...下面会根据各种场景进行分析 二、异步函数 在我们实际开发中我们会遇到很多异步函数,但是因为Jest在进行测试,默认情况下一旦到达运行上下文底部当前测试立即结束,这样意味着测试将不能按照我们的预期进行,...第二:我们测试某个方法,可能当前方法会夹杂对其他外部方法的调用,如果外部方法并不是一个纯函数,此时我们不应该再对外部方法再进行测试,而是通过Mock方式去模拟它。...每个方法都有不同的使用场景,每个API都会生成一个mock模拟函数Jest对模拟函数提供了很多方法给予我们模拟方法的返回、实现等等,可移至文档参考 jest.fn jest.fn主要是创建一个模拟函数...而jest.mock的调用方式有所不同。Jest接管require系统,jest.mock告诉Jest,它在需要应返回模块模拟,而不是实际模块。

10.2K20

干货 | 携程租车React Native单元测试实践

expect(add(x, y)).toBe(output); }); }); * describe:创造一个块,将一组相关的测试用例组合在一起 * test:也可以用it,测试用例 * expect:使用函数断言某个值...当主动修改造成ui变化时,使用jest -u来更新快照。...jest.spyOn(instance, '_onClear'); instance.forceUpdate(); fliterModal.childAt(0).simulate('press');..._onClear).toBeCalled();//测试组件实例上的方法是否被调用 九、Redux测试 在使用React或者React Native通常会使用Redux进行状态的管理,需要mock store...; 良好的单元测试就是一份最好的注释,同时迫使我们写易于测试的函数式代码; 另外我们在写单元测试的时候并不是堆砌覆盖率,而是需要保证功能细节的正确,覆盖率并不是最重要的,单元测试也不是银弹,我们也在结合诸如

5.9K30

在 vue-test-utils 中 mock 全局对象

若仔细端详输出则会发现: [Vue warn]: Error in config.errorHandler: "TypeError: _vm....(译注:通过这种方式就不能在单元测试中耦合与特定语言相关的内容了,因为翻译功能实际上已失效,也更无法处理可选参数等) 使用配置设置默认的 mocks 有时需要一个 mock 的默认值,这样就不用为每个测试用例都设置一遍了...,所以我将把默认 mock 描述在 jest.init.js 文件中 -- 该文件会在测试运行前被自动加载。...= "en" VueTestUtils.config.mocks["$t"] = (msg) => translations[locale][msg] 现在尽管还是用了一个 mock 过的 $t 函数... (译注:依然无法应付复杂的翻译) 总结 本文论述了: 在测试用例中使用 mocks 以 mock 一个全局对象 用 config.mocks 设置默认的 mock

1.6K10

使用storybook管理React组件

新建一个Storybook React项目 按照官方教程使用npx -p [@storybook](/user/storybook)/cli sb init安装,一直会报错: TypeError: Cannot...测试UI组件 4.1 写测试用例的原因 找到bug 新修改没有改变已有的接口和功能 将测试用例作为文档 4.2 测试结构 使用storyshots插件来实现,其核心是使用Jest,原理是每次生成一份DOM...PS:下次运行Jest,只有DOM结构与上次完全一致测试才会通过,通常会有两种方法来解决这种情况: 找到问题,修复不同; 用新的DOM结构替换旧的。...4.3 测试交互 storybook交互性测试可以使用 Enzyme来模拟用户输入,然后使用Mocha or Jest来进行结果测试,storybook又一个专门的插件帮助我们集成他们:specifications...specifications插件的使用

3.3K20

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

通过第一个测试用例加 1,number的值为 1,当第二个用例减 1 的时候,结果应该是 0。但是这样两个用例间相互干扰不好,可以通过 Jest 的钩子函数来解决。...jest提供了三种方案来测试异步代码,下面我们分别来看一下。 done 关键字 当我们的test函数中出现了异步回调函数,可以给test函数传入一个done参数,它是一个函数类型的参数。...如果代码中使用了Promise,则可以通过返回Promise来处理异步代码,jest会等该promise的状态转为resolve才会结束,如果promise被reject了,则该测试用例不通过。...Mock 介绍jest中的mock之前,我们先来思考一个问题:为什么要使用mock函数? 在项目中,一个模块的方法内常常会去调用另外一个模块的方法。...jest中与mock相关的api主要有三个,分别是jest.fn()、jest.mock()、jest.spyOn()。使用它们创建mock函数能够帮助我们更好的测试项目中一些逻辑较复杂的代码。

4.9K20

Jest + React Testing Library 单测总结

整个流程和写法也不是特别难,所以就理所当然地觉得,写测试也不是特别难。 加上之前实际的工作中,也没有太多的写测试的经历,所以当自己需要对组件库补充单元测试的时候,发现并不能照葫芦画瓢来写单测。...2、Jest使用 Jest 的安装这里就不赘述了,如果使用 create-react-app 来创建项目,Jest 和 React Testing Library(RTL) 都已经默认安装了。...2.2 Jest 匹配器 Jest 匹配器是在 expect 断言,用来检查值是否满足一定的条件。...所以,Jest Mock 的意义就在于可以帮助我们完成下面这些事情: 有些模块可能在测试环境中不能很好地工作,或者对测试本身不是很重要,使用虚拟数据来 mock 这些模块,可以使你为代码编写测试变得更容易...都可以通过 debug 函数把组件渲染结果打印出来,这可以提高我们编写用例的效率,同时,这一特点也很符合 RTL 的设计观念。

4.5K20

JavaScript 测试教程 part 1:用 Jest 进行单元测试

它们还能够防止你在修复一个 bug 生成另一个 bug。你可以测试程序的方方面面,从单个函数及其返回值到在浏览器中运行的复杂程序。由于这是本课程的第一篇文章,因此我会简要对比一些流行的测试类型。...稍后我们将学习如何在 React 中使用 Jest 首先,让我们创建一些可以测试的简单函数。...有关完整信息,请访问 Jest 文档。 分组测试 每个文件通常会有一个以上的测试。使用 Jest,你可以使用 describe 函数对它们进行分组。它创建了一个可以合并多个测试的块。...4.5 being 5', () => { 16 expect(Math.round(4.5)).toBe(5); 17 }) 18 }); 19 20}) 你可能会注意到用了 it 函数不是...为了执行它们,我们已经了解了 Jest 框架的基础知识。它包括有关如何运行测试(安装和文件命名)的知识。为了运行测试,我们使用了test、 it 和 describe 函数

2.8K20

单元测试

一旦关注点不是代码的信心,而是测试代码细节,那么测试用例会变得非常脆弱,难以维护。...为了解决这个问题,可以尝试从以下几点入手: 使用 beforeEach 函数或 beforeAll 函数在每个测试用例开始之前进行初始化设置。...在每个测试用例之后使用 afterEach 函数或 afterAll 函数来清理测试环境。这样可以确保每个测试用例完成后,不会留下任何对后续测试用例有影响的状态。...act 的使用场景如下: 当你在测试中进行与 React 组件的交互(例如模拟用户点击、输入等),可以使用 act 来确保组件在更新后进行正确的断言。...当你在测试中进行异步操作(例如使用 setTimeout、Promise 等),可以使用 act 来等待异步操作完成后再进行断言。

16610
领券