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

Week14-服务端选型:磨刀不如砍柴功

第一章 周介绍 1-1 本周介绍 服务端选型:所有技术为业务服务 nodejs框架选型:Koa2 数据库:Mysql Mongodb Redis 登录校验:JWT 单元测试与接口测试:Jest...优缺点 优点:不占用服务器内存、多进程,多服务器,不受影响、不受跨域限制 缺点:无法快速封禁登录的用户。...4-5 章总结 Cooike/Session/Jwt/OSS/OAuth2 第五章 单元测试选择 Jest 5-1 开始 保证软件质量:单元测试和接口测试。...Jest 和Mocha 单元测试为何难以落实 supertest接口测试 测试驱动开发TDD 5-2 介绍Jest和Mocha Jest官网:https://jestjs.io/zh-Hans/docs...本地测试: jest + supertest 远程测试: jest + axios 接口测试和单元测试,代码都放在 __test__下,但两者概念要区分开。

1.9K30

前端单元测试那些事

2.2 单元测试分类 TDD - (测试驱动开发)侧重点偏向开发,通过测试用例来规范约束开发者编写出质量更高、bug更少的代码 BDD - (行为驱动开发) 由外到内的开发方式,外部定义业务成果,再深入到能实现这些成果...Jest 运用 Jest 是 Facebook 开源的一款 JS 单元测试框架,它也是 React 目前使用的单元测试框架,目前vue官方也把它当作为单元测试框架官方推荐 。...API,分别是jest.fn()、jest.spyOn()、jest.mock() jest.fn() - 是创建Mock函数最简单的方式,如果没有定义函数内部的实现,jest.fn()会返回undefined...作为返回值,当然你也可以给他设置返回值、定义内部实现或返回Promise对象,如下例: // 断言mockFn执行后返回值为name it('jest.fn()返回值', () => { let...,我们可能要对它进行多次不同的mock,这时候需要在beforeEach使用restoreAllMocks方法重置状态 mock的目的: 设置函数返回值 获取获函数调用情况 改变原本函数的内部实现 4.

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

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

,但它们的值是一样的,也是可以的 小结 对于有返回值的function,就是通过判断「返回值」,是否与「期望值」相等即可 这样的好处: ① 当有新需求要扩展该函数时,可以保证该函数的返回值仍保持不变,进而不会影响到使用到该函数的旧需求...② 当测试的函数比较复杂时,非常方便,不用了解内部的详细代码,只需返回值符合期望即可 如何测试ReactComponent 当我写完一个React组件时,我该如何测试它呢?...,也无法与子组件互动 // render()用于将React组件渲染成静态的HTML并分析生成的HTML结构 // 渲染一个react组件 const component =...()建立 mock function // 进行单元测试时,应该将关注点放在「测试目标」上,onChartReady 作为被依赖的function, // 内部发生了什么与「测试目标」无关...() 作用: 新建mock function 在进行单元测试时,应该将关注点放在「测试目标」上,而onChartReady作为被依赖的function,不管它的内部发生了什么,都与「测试目标」无关,只需关注返回的值

6.1K50

Jest基本使用方法以及mock技巧介绍

导读 Jest是由Facebook开发并维护的一套js的单元测试框架,之前在后台的nodejs项目里面第一次尝试使用,感觉还是非常容易上手的,功能也比较强大。...mock属性的所有api可以参考:https://facebook.github.io/jest/docs/en/mock-function-api.html 2.1.2  Mock返回值 可以使用mock...2.1.3  Mock内部实现 使用jest.fn或者mockImplementationOnce 可以完全替换需要mock的函数。 如下面的例子: ?...当需要mock的函数是其他模块创建的就可以使用mockImplementation。 ?...2.2.2  jest.mock()直接在单元测试里面mock 模块 例如我们很多产品代码里面会使用fs文件读取文件, 在单元测试中, 我们并不需要真去调用fs读取文件, 就可以考虑把fs模块mock掉

8.2K50

写代码无BUG,网易云前端单元测试方案总结

nodejs 自带的 assert 模块提供了下面一些断言方法,只能满足一些简单场景的需要。...使用 Jest + Enzyme 对 React 进行单元测试 ?...react-test-renderer 将组件渲染成内存中的对象, 可以方便进行 props, state 等数据方面的测试,对应的操作对象为 ShallowWrapper,在这种模式下仅能感知到第一层自定义子组件,对于自定义子组件内部结构则无法感知...使用 shallow() 能感知到的结构如下, 注意看到 div.text 作为 Living 组件的 children 能够被检测到,但是 Living 的内部结构无法感知。...,整个单元测试技术体系包含了很多东西,本文无法面面俱到,只介绍了一些距离我们最近的相关的技术体系。

9.5K20

对 React 组件进行单元测试

无论是在代码的初始搭建过程中,还是之后难以避免的重构和修正bug过程中,常常会陷入逻辑难以梳理、无法掌握全局关联的境地。...mock mock一般指在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法 广义的讲,以上的 spy 和 stub 等,以及一些对模块的模拟,对 ajax 返回值的模拟...React 单元测试中用到的工具 Jest 不同于"传统的"(其实也没出现几年)的 jasmine / Mocha / Chai 等前端测试框架 -- Jest的使用更简单,并且提供了更高的集成度、更丰富的功能...四个基础单词 编写单元测试的语法通常非常简单;对于jest来说,由于其内部使用了 Jasmine 2 来进行测试,故其用例语法与 Jasmine 相同。...是一个会在npm脚本中被调用的普通 JS 文件,而非XXX.json或.XXXrc的形式,所以 nodejs 的各自操作都可以进行,比如引入 fs 进行预处理读写等,灵活性非常高,可以很好的兼容各种项目

4.2K40

实例入门 Vue.js 单元测试

同时也没有必要一味追求行覆盖率,因为它会导致我们过分关注组件的内部实现细节,从而导致琐碎的测试。 II....Vue.js 中的单元测试工具 2.1 Jest 不同于"传统的"(其实也没出现几年)的 jasmine / Mocha / Chai 等前端测试框架;Jest的使用更简单(也许就是这个单词的本意“俏皮话...四个基础单词 编写单元测试的语法通常非常简单;对于jest来说,由于其内部使用了 Jasmine 2 来进行测试,故其用例语法与 Jasmine 相同。...3.2 整合到工作流中 写好的单元测试,如果仅仅要靠每次 npm test 手动执行,必然会有日久忘记、逐渐过时,最后甚至无法执行的情况。...一个设计不佳的组件,就会变成无法测试的,进而你就会简单的跳过单元测试,又导致了其保持未测试状态,变成一个恶性循环。

2.8K20

如何做前端单元测试

前端为什么需要单元测试? 必要性:JavaScript 缺少类型检查,编译期间无法定位到错误,单元测试可以帮助你测试多种异常情况。 正确性:测试可以验证代码的正确性,在上线前做到心里有底。...Jest 和 Mocha 相比,无论 github starts & issues 量,npm下载量相比,都有明显优势。... github starts & issues 以及 npm 下载量角度来看,Jest 的关注度更高,社区也更活跃 框架对比 框架 断言 异步 代码覆盖率 Mocha 不支持(需要其他库支持) 友好..." }, } 运行 npm run test ,jest 将打印下面这个消息 3.不支持部分 ES6 语法 nodejs 采用的是 CommonJS 的模块化规范,使用 require 引入模块...运行时内部先执行( jest-babel ),检测是否安装 babel-core,然后取 .babelrc 中的配置运行测试之前结合 babel 先把测试用例代码转换一遍然后再进行测试 4.测试 ts

3.2K20

我为什么喜欢NestJS

NodeJS 的世界里,也存在一个全面借鉴 Spring 设计思想的框架,它在 github 上有将近 2w 的 star,npm 的周下载量超过 11w,它就是本文要介绍的 NestJS。...二、与其它框架的对比 市面上 NodeJS 的服务端框架有很多,如Koa、Express、EggJS、Midway等,它们功能都很强大,也有很好的生态,插件非常丰富,为什么还需要Nest呢?...依赖注入最大的作用是代码解耦,依赖的对象根据不同的情况可以有多种实现,如单元测试的时候可以在不改业务代码的情况下将依赖的对象换成 Mock 数据。...另外也声明了模块内部的Controller和Provider。我们一般说的Service是Provider的一种。...(@Param('name') name: string): Promise { return this.catsService.findOne(name); } @Get(

1.9K20

MongoDB入门实操《中篇》续

1 MongoDB 中的操作与MysqlDB 中的查询操作对比展示 ---- 左边为Mongo 命令,右边为Mysql 命令: db.test.find() ==> select * from test...db.test.findOne() ==> select *from test limit 1 db.test.find().pretty() ==>select * from test \G db.test.find...应用场景: 1、如果需要将MongoDB作为后端DB来代替Mysql使用,即这里Mysql与MongoDB 属于平行级别。...(如日志之类) (2)、datamodels设计阶段就将原子性考虑于其中,无需事务之类的辅助。开发用如nodejs之类的语言来进行开发,对开发比较方便。...(3)、MongoDB本身的failover机制,无需使用如MHA之类的方式实现。 2、将MongoDB作为类似redis ,memcache来做缓存DB,为Mysql提供服务,或是后端日志收集分析。

18830

你不知道的 Vue 单元测试(6000字实战单元测试

介绍 Vue-Test-Utils 是 Vue.js 官方的单元测试实用工具库,它提供了一系列的 API 来使得我们可以很便捷的去写 Vue 应用中的单元测试。...主流的单元测试运行器有很多,比如 Jest、Mocha 和 Karma 等,这几个在 Vue-Test-Utils 文档里都有对应的教程,这里我们只介绍 Vue-Test-Utils + Jest 结合的示例...❞ 环境配置 通过脚手架 vue-cli 来新建项目的时候,如果选择了 Unit Testing 单元测试且选择的是 Jest 作为测试运行器,那么在项目创建好后,就会自动配置好单元测试需要的环境,直接能用...但是新建项目之初没有选择单元测试功能,需要后面去添加的话,有两种方案: 第一种配置: 直接在项目中添加一个 unit-jest 插件,会自动将需要的依赖安装配置好。..." } } 第一个测试用例 为了保证环境的一致性,我们创建项目开始一步一步演示操作步骤。

11K41

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

在这一系列实战教程中,我们将手把手带你掌握 Jest、Enzyme、Cypress 等测试利器,帮助我们 bug 的沼泽中挣脱出来,成为一个无往不利的高阶前端开发者!...初识 Jest 单元测试 测试是检查代码的代码,能够大大增强我们对应用的信心。更重要的是,测试会阻止你在修复一件事情的同时破坏另一件事情,让我们能够放开手脚进行功能的添加与大规模重构。...您可以测试应用程序的许多方面,单个函数及其返回值到在浏览器中运行的复杂应用程序。万丈高楼平地起,让我们先来了解一下有哪些测试。...在这一系列教程中,我们将会从零开始,一步步带你熟悉单元测试到端到端测试的方方面面。我们将会在一个 React 项目中实践所学到的自动化测试技术。...提示 你也许发现我们并没有去验证 TodoList 每一项是否符合,这是因为我们用了 Enzyme 的浅层渲染,这意味着所有的 children 都是处于未渲染状态,当然就无法验证内容是否正确了。

2.9K10

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

单元测试中,我们可能并不需要关心内部调用的方法的执行过程和结果,只想知道它是否被正确调用即可,甚至会指定该函数的返回值。这个时候,mock的意义就很大了。...我们在测试中也主要是用到了mock函数提供的以下三种特性: 捕获函数调用情况 设置函数返回值 改变函数的内部实现 下面,我将分别介绍这三种方法以及他们在实际测试中的应用。...jest.fn() jest.fn()是创建mock函数最简单的方式,如果没有定义函数内部的实现,jest.fn()会返回undefined作为返回值。...()所创建的mock函数还可以设置返回值,定义内部实现或返回Promise对象。...'); // 断言mockFn执行后返回值为default expect(mockFn()).toBe('default'); }) test('测试jest.fn()内部实现', () =>

4.9K20

Node.js学习笔记(四)——NodeJS访问MongoDB与MySQL数据库

/ nodejs驱动:https://github.com/mongodb/node-mongodb-native 1.1、安装MongoDB 下载地址:https://www.mongodb.com/..." --install 4)、错误处理 如果运行过程中提示“无法定位程序输入点ucrtbase.terminate于动态链接库api-ms-win-crt-runtime-|1-1-0.dll”错误,请下载安装...: db.students.find() b)、按条件查询(支持多条件):db.集合.find(条件); db.students.find({name:"tom",age:19}); 对象中的条件要求同时成立...c)、查询第一条(支持条件):db.集合.findOne(条件); d)、限制数量:db.集合.find().limit(数量); e)、跳过指定数量:db.表名.find().skip(数量)...students=db.collection("students"); let query={id:202204}; let result=await students.findOne

3.4K20
领券