分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

node.js 学习笔记1-mocha

发布时间:2023-09-06 01:30责任编辑:熊小新关键词:js

 

1.mocha是什么

  mocha是一款流行的额JavaScript测试框架。

2.mocha的基本用法

  1.使用npm 安装mocha包,我并没有选择全局安装。只是在mocha的文件夹里的Package.json添加mocha的依赖。

    

  如下图

{ ?"name": "mocha-test", ?"version": "0.0.1", ?"dependencies": { ???"koa": "2.4.1", ???"supertest": "3.0.0", ???"mocha": "3.0.2" ?}, ?"scripts": { ???"test": "mocha" ?}, ?"exclude": [ ???"node_modules" ?], ?"keywords": [ ???"test", ???"mocha" ?]}

2.mocha的测试写法

const assert = require(‘assert‘);const sum = require(‘../hello‘);describe(‘测试HELLO.JS‘,() =>{ ???describe(‘测试SUM函数‘,() =>{ ???????before(function () { ???????????console.log(‘before:‘); ???????}); ???????after(function () { ???????????console.log(‘after.‘); ???????}); ???????beforeEach(function () { ???????????console.log(‘ ?beforeEach:‘); ???????}); ???????afterEach(function () { ???????????console.log(‘ ?afterEach.‘); ???????}); ???????it(‘sum() should return 0‘,() =>{ ???????????assert.strictEqual(sum(),0); ???????}) ???????it(‘sum(1) should return 1‘,() =>{ ???????????assert.strictEqual(sum(1),1); ???????}) ???????it(‘sum(1,2) should return 3‘,() =>{ ???????????assert.strictEqual(sum(1,2),3); ???????}) ???????it(‘sum(1,2,3) should return 6‘,() =>{ ???????????assert.strictEqual(sum(1,2,3),6); ???????}) ???})})

首先 mocha必须要有断言模块。图中的assert是node.js自带的。简单来说断言对传入数据做一些比较操作的类。

describe函数的两个参数分别是测试的描述以及测试的代码区域。describe可以嵌套describe函数。可以在层次结构上更好的描述测试逻辑。

it函数式才是真正运行测试的函数。第一个参数仍然是测试的描述,第二个参数是一个函数。里面放的就是要测试的内容。

这些都是廖雪峰老师教程里的例子。具体的源码和教程可以去看。在此只是做一个学习笔记。对自己的总结。

3.mocha如何启动测试

在廖雪峰老师的教程中有三种方法。我在实际尝试时。第一种方法没有用处。

我用的第一种方法是向package.json文件里添加“script”:{"test": "mocha"}。然后命令行切换到测试文件的目录下输入npm test即可。

如图

 第二种方法是在webstorm上添加mocha依赖。(只是因为我用的webstorm,廖雪峰老师用的vscode)

 直接放图吧

可以直接在IDE中一键测试。十分方便

3.引发出的一些问题与解答

在廖雪峰老师的教程中会有这样的代码

 ?let expression = await fs.readFile(‘./data.txt‘, ‘utf-8‘);

实际上如果你这么写的话 编辑器会直接报错。要求你必须加入回调函数。并且这么写await是不能起到应有的作用的。

因为fs.readFile是一个异步函数。没有返回的值。

await 后面必须是一个promise对象。

所以我们必须改写这个函数

let readFile = (path,format) =>{ ??return new Promise(resolve,reject) =>{ ??????fs.readFile(path,format,(err,data) =>{ ??????????if(err) reject (err); ??????????resolve(data); ???????}) ?????}} ???

放上完整代码

var readFile = function (fileName,format) { ???return new Promise((resolve, reject) =>{ ???????fs.readFile(fileName,format,(err,data) =>{ ???????????if(err) reject (err); ???????????resolve(data); ???????}) ???})};const fs = require(‘fs‘);module.exports = async () =>{ ???let expression = await readFile(__dirname+‘/data.txt‘,‘utf-8‘); ???let fn = new Function(‘return ‘+ expression); ???let r = fn(); ???console.log(`Calculate: ${expression} = ${r}`); ???return r;}

另外还有一个问题就是。在fs.readFile的第一个参数path中使用相对路径会出现读取不到的错误。是因为此参数里默认的当前路径有误。最好使用绝对路径。或者__dirname+’...‘的形式。

4.最后

由于异步测试和HTTP测试在教程中讲的较为简短。

所以并没有太多值得写出来的东西。

因为刚接触这些新东西。新框架。

很多API都不了解。也不会用。不懂得框架的设计思想。

所以只能等以后使用这些框架做一些具体的实例时。才有更多的发现以及感悟。

今天就先到这把。

node.js 学习笔记1-mocha

原文地址:http://www.cnblogs.com/liyuhan123456/p/8040555.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved