资讯专栏INFORMATION COLUMN

Mocha 和 Chai 入门初探

caoym / 1829人阅读

摘要:转载自楼主个人博客和入门初探在和作比较的时候两者主要的不同就是的集成度比较高内置断言库而需要搭配额外的断言库在此选择了比较流行的作为断言库风格的选择其中又有好几种断言风格我们经常见到的其实就是风格的其中我较喜欢因为它可以直接以属性的方式嵌入

转载自楼主个人博客 Mocha 和 Chai 入门初探

Chai

在和 jest 作比较的时候, 两者主要的不同就是 jest 的集成度比较高内置断言库, 而 mocha 需要搭配额外的断言库, 在此选择了比较流行的 chai 作为断言库.

风格的选择

其中 chai 又有好几种断言风格, 我们经常见到的其实就是 BDD 风格的 should / expect.

其中我较喜欢 should, 因为它可以直接以属性的方式嵌入所有内置原生对象, 所以可以很方便的以 variable.should.equal(someValue) 的形式来书写断言, 和 expect 相比较可以省略一对 () ... 如果是 expect 风格的话, 上述示例代码等价于 expect(variable).to.equal(someValue). 在一般情况下两者的使用时几乎相同的, expect 作为断言的开始, should 接在想要断言的变量之后. 但是有一些地方 should 就需要变换一下我上述所说的写法了.

Should

should 实际上是给所有的对象都扩充了一个 getter 属性 should, 如果你想在浏览器中运行测试的话, should 在 IE 浏览器中会有一些问题. 正是因为 should 是扩充了 Object.prototype, 所以如果变量的值为 nullundefined 的时候, 是无法使用 .should.equal() 的形式的, 因为 null, undefined 的原型不是 Object,所以should 不存在. 所以此时应当如下所示使用.

const sould = require("chai").should();

...

should.not.exist.(variable); // variable 的值不应该是 null 或者 undefined
Mocha

现在我们来看看如何对 mocha 进行配置以及上手的步骤. 我假定在 mocha 中写测试的时候也同样需要使用 ES6 语法, 还有一个关注点是如果我在 webpack.config.js 中已经设置了 alias, 那么在写测试代码的时候, 我希望导入的文件也可以使用 alias 来保持我路径的一致性以及与此同时带来的便利性.

配置 下载依赖
npm install --save-dev mocha chai

接下来只要在项目根目录下新建文件夹 test, 在里面写的测试文件以 *.test.js 命名, 接下来在 packag.json 文件中 配置 npm test 命令.

"npm test": "./node_modules/.bin/mocha"

还可以在 test 根目录下新建一个配置文件 mocha.opts, 其中配置的选项相当于给 mocha 命令加入了命令行参数.

--recursive
--ui bdd

具体的配置请参照文档 Mocha - USAGE.

之后在终端输入 npm run test 即可运行测试.

支持 ES6

上述只是配置好了基本的运行环境, 如果需要支持 ES6 的话, 那么还需要两个简单的步骤.

npm install --save-dev babel-register

然后修改 mocha.opts

--recursive
--ui bdd
--require babel-register

完成, 现在已经支持 ES6 语法了.

支持 Webpack 的 Alias

如果不需要请跳过此步骤, 需要的推荐一个本人基于一个开源库修改的 babel 插件 babel-plugin-webpack-alias-resolve.

写测试

直接上代码! 有一个对 axios 经过封装的 ajax 函数, 我现在对其进行测试. 下面是代码在 Gist 的地址 the test for ajax which based on axios

结束

写的很少 ... 正在实践当中, 其实测试上述那个文件的时候我已经踩了一些坑了, 但是写出来还是不够多, 等踩多了总结一下踩过的那些.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86708.html

相关文章

  • Mocha测试初探

    摘要:是测试用例,表示一个单独的测试,是测试的最小单位。第一个参数是测试用例的名称加应该等于,第二个参数是一个实际执行的函数。这里对异步代码进行测试时需要注意一点,默认一个单元测试最多执行超时会报错。 Mocha简介: 一个具有丰富特性的javascript 测试框架,支持多种断言库,异步代码测试等,不仅可运行在node.js 环境中还可以运行在浏览器中。 一、安装 // 全局安装 npm ...

    Binguner 评论0 收藏0
  • FE.TEST-前端测试初探

    摘要:使用可以快速生成一个项目,其中包含了和以及覆盖率统计的配置参考一个创建测试脚本的快速方法其他参考资料前端自动化测试概览测试之使用对项目进行单元测试 showImg(https://segmentfault.com/img/bVbjfXr?w=600&h=317); 前言 测试可以提供快速反馈,根据测试用例覆盖代码,从而提升代码开发效率和质量。根据投入产出价值,通常迭代较快的业务逻辑不做...

    Travis 评论0 收藏0
  • FE.TEST-前端测试初探

    摘要:使用可以快速生成一个项目,其中包含了和以及覆盖率统计的配置参考一个创建测试脚本的快速方法其他参考资料前端自动化测试概览测试之使用对项目进行单元测试 showImg(https://segmentfault.com/img/bVbjfXr?w=600&h=317); 前言 测试可以提供快速反馈,根据测试用例覆盖代码,从而提升代码开发效率和质量。根据投入产出价值,通常迭代较快的业务逻辑不做...

    张率功 评论0 收藏0
  • 前端单元测试初探

    摘要:本文只讨论单测的范畴,对集成测试有兴趣的话,可以看下的集成测试代码。前端单测现状测试本质上就是假定一个输入,然后判断得到预期的输出。 原文发于我的博客:https://github.com/hwen/blogS... 要不要写单测? 关于这个 cnode 上就有个很有意思的讨论 做个调查,你的 Node 应用有写单测吗? 看完这个应该会有结论?如果没有,就回帖跟别人探讨下~ 测试 测试...

    isLishude 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<