当我们做项目时,写完一个功能后都要进行测试,JS中测试框架一般使用:mocha
、chai
,如果你还需要测试接口的话,可能还需要 supertest
测试框架。
安装依赖:yarn add mocha chai supertest -D
编写密码加密工具
比如我现在写个密码加密,密码验证的工具:
密码加密一般用的比较多的是:md5
、bcrypt
,这里使用 bcrypt
: yarn add bcrypt
// src/main/util/PasswordUtil.js
import bcrypt from 'bcrypt';
// 盐值
const SALT = 10;
/**
* 加密密码(异步)
* @param {string} pwd 要加密的密码
* @returns {string} 加密后的密码
*/
export const encryptPasswrod = async (pwd) => {
return await bcrypt.hash(pwd, SALT);
};
/**
* 密码验证(异步)
* @param {string} pwd 密码
* @param {string} encryptedPwd 加密后的密码
* @returns {boolean} 验证成功返回 true
*/
export const checkPasswrod = async (pwd, encryptedPwd) => {
return await bcrypt.compare(pwd, encryptedPwd);
};
/**
* 加密密码(同步)
* @param {string} pwd 要加密的密码
* @returns {string} 加密后的密码
*/
export const encryptPasswrodSync = (pwd) => {
return bcrypt.hashSync(pwd, SALT);
};
/**
* 密码验证(同步)
* @param {string} pwd 密码
* @param {string} encryptedPwd 加密后的密码
* @returns {boolean} 验证成功返回 true
*/
export const checkPasswrodSync = (pwd, encryptedPwd) => {
return bcrypt.compareSync(pwd, encryptedPwd);
};
编写测试代码
// src/test/util/PasswordUtil.test.js
import {
expect } from 'chai';
import {
encryptPasswrod, checkPasswrod, encryptPasswrodSync, checkPasswrodSync } from '@main/util/PasswordUtil'