记一次使用mocha做单元测试

发表于:2019-4-09 11:22

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:awsky    来源:掘金

  为什么要使用mocha
  我写了一个有向无环图,但是没法验证我写的代码时正确的。所以引入单元测试,选择mocha是因为比较多人用。文档比较全
  使用过程
  安装mocha nyc  npm i nyc @babel/register mocha --save-dev
  在package.json中的scripts上添加"test": "nyc mocha --require @babel/register -R spec src/test",这样运行npm run test 就能运行test文件夹下的所有测试文件
  在test文件夹下新建IsDAG.test.js文件(通常,测试脚本与所要测试的源码脚本同名,但是后缀名为.test.js),写测试代码,因为node自带的断言库不好用,所以可以使用chai断言库
  写完后运行npm run test发现报错了 import不存在。原因是
  mocha是node的构建工具,默认只支持commonJS的模块系统,引入@babel/register
  "test": "nyc mocha --require @babel/register -R spec src/test"。
  所以在"test": "nyc mocha --require @babel/register -R spec src/test"加上@babel/register
   import { expect } from 'chai';
  import { isDag } from '../index';
  // describe块称为"测试套件"(test suite),表示一组相关的测试。它是一个函数,第一个参数是测试套件的名称("加法函数的测试"),第二个参数是一个实际执行的函数。
  describe('是否是有向无环图测试', function() {
  // it块称为"测试用例"(test case),表示一个单独的测试,是测试的最小单位。它也是一个函数,第一个参数是测试用例的名称("1 加 1 应该等于 2"),第二个参数是一个实际执行的函数。
  it('是Dag测试', function (done) {
  const graph = [
  {
  source: 1,
  target: 2,
  },{
  source: 1,
  target: 3
  }
  ]
  const result = isDag(graph);
  if(result) {
  // 正确返回done
  done()
  }else {
  // 错误返回错误信息
  done('错误');
  };
  });
  });
  在vscode上断点调试
  选择mocha文件测试
  编写配置文件,(如何把nyc命令加进来我就不知道了)
   {
  // 使用 IntelliSense 了解相关属性。
  // 悬停以查看现有属性的描述。
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
  {
  "type": "node",
  "request": "launch",
  "name": "Mocha Tests",
  "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha", // mocha的位置
  "args": [ // 运行的命令
  "--require",
  "@babel/register",
  "-R",
  "spec",
  "${workspaceFolder}/src/test" // 测试文件都位置
  ],
  "internalConsoleOptions": "openOnSessionStart"
  }
  ]
  }
  添加断定调试
  
     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号