最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

怎样用Jest测试JavaScript应用

来源:动视网 责编:小采 时间:2020-11-27 20:11:06
文档

怎样用Jest测试JavaScript应用

怎样用Jest测试JavaScript应用:我们知道,Jest 是 FaceBook 用来测试 JavaScript 应用的一套测试框架,那么也包含了一些应用,它的优点其中就包括了对于React 的支持,也很容易支持其他框架,那么今天我们就教大家怎么用Jest测试JS应用从最简单的开始,我们可以看看如何用 Jest 测试
推荐度:
导读怎样用Jest测试JavaScript应用:我们知道,Jest 是 FaceBook 用来测试 JavaScript 应用的一套测试框架,那么也包含了一些应用,它的优点其中就包括了对于React 的支持,也很容易支持其他框架,那么今天我们就教大家怎么用Jest测试JS应用从最简单的开始,我们可以看看如何用 Jest 测试


我们知道,Jest 是 FaceBook 用来测试 JavaScript 应用的一套测试框架,那么也包含了一些应用,它的优点其中就包括了对于React 的支持,也很容易支持其他框架,那么今天我们就教大家怎么用Jest测试JS应用

从最简单的开始,我们可以看看如何用 Jest 测试纯 JS 项目。

假设你需要测试 sum.js:

export default (a, b) => a + b

你只需要对应地新建一个 sum.test.js[1]:

import sum from './sum'
test('sum', () => {
 expect(sum(2, 3)).toBe(5)
})

关于这里的 `expect` 语法

然后在终端运行 jest 命令的时候就会自动找到这个文件,执行这里面的测试:

额,报错了,原来 Jest 默认只支持你所使用的 node.js 版本所支持的 JS 特性,例如 import export 就不支持,所以要么你的代码使用系统 node.js 兼容的语法写 (也就是使用 require),要么在这里使用 Babel 转义一下。

在 Jest 中使用 Babel 很简单,只需要安装 babel-jest 并新建一个 .babelrc 加入你想要的配置就行了,Jest 会自动使用 babel-jest。这里我们简单地使用 babel-preset-env 即可,对应的 .babelrc 是:

{
 "presets": ["env"]
}

然后重新运行 jest 测试便通过了:

jest 2

对于 React 应用,基本和纯 JS 项目类似,不过你需要在 .babelrc 中配置对 JSX 的支持,在大多数时候你的项目本身就已经在使用 .babelrc 了,所以这一步甚至也省略掉了。

资源文件

当你要测试的代码引用了非 JS 文件时,Jest 就不知道如何使用这些文件了,例如你的 Webpack 项目中的一个文件:

import './style.css'

正如你需要在 Webpack 中配置了 css-loader 一样,你也需告诉 Jest 如何处理 CSS 文件。

{
 "jest": {
 "transform": {
 "^.+\\.(js|jsx)$": "babel-jest",
 "^.+\\.css$": "<rootDir>/jest/css-transform.js"
 }
 }
}
关于 babel-jest
对应的 ./jest/css-transform.js
// 大多数测试并不关心 CSS 文件里的内容
// 所以这里我们直接返回一个空的对象
module.exports = {
 process() {
 return 'module.exports = {};'
 },
 getCacheKey() {
 // The output is always the same.
 return 'css-cache'
 }
}

类似地,你可以使用 transform 来设定如何处理其它类型的文件,比如 .vue[2] .svg 文件。

浏览器 API

假设你要测试的是一个 Web 应用,依赖于一些浏览器 API 比如 window document,它在 Jest 中同样可以正常运行,因为 Jest 默认使用了 js-dom 来模拟浏览器环境,不需要浏览器环境时可以通过使用命令行参数 --env node 或者配置文件来禁用。

Snapshot 测试

当你期望某个值不会改变的时候,可以使用 snapshot 测试。简单地说,它就是记录这个值的状态到本地自动生成的 snapshot 文件里,然后在下一次测试中用新的值来和其进行对比。这对 UI 之类的测试很有帮助:

import React from 'react'
import Link from '../Link.react'
import renderer from 'react-test-renderer'
it('renders correctly', () => {
 const tree = renderer
 .create(<Link page="http://www.facebook.com">Facebook</Link>)
 .toJSON()
 expect(tree).toMatchSnapshot()
})

这确保了 <Link page="http://www.facebook.com">Facebook</Link> 渲染出的内容不会出错。

当你更改了 <Link> 组件的逻辑,需要更新 snapshot 文件时,可以加上 --updateSnapshot 或者 -u 来更新。

类似的,Snapshot 测试不止于 UI 测试中,假设你写了个 Markdown 解析器,你可以用它来确保解析出的内容不会改变:

import renderMarkdown from './my-markdown-parser'
test('render correctly', () => {
 const html = renderMarkdown('# markdown code')
 expect(html).toMatchSnapshot()
})

相信看了这些案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

相关阅读:

怎么用CSS3做出灯光照射显示文字动画

css3点击显示涟漪特效

CSS3怎么制作蝴蝶飞舞的动画

文档

怎样用Jest测试JavaScript应用

怎样用Jest测试JavaScript应用:我们知道,Jest 是 FaceBook 用来测试 JavaScript 应用的一套测试框架,那么也包含了一些应用,它的优点其中就包括了对于React 的支持,也很容易支持其他框架,那么今天我们就教大家怎么用Jest测试JS应用从最简单的开始,我们可以看看如何用 Jest 测试
推荐度:
标签: 应用 js 测试
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top