3-1、redis 安装及基本操作
- 安装 redis
npm i redis -d
- 连接 redis
const redis =require('redis')
//创建客户端
const redisClient = redis.createClient(6379, '127.0.0.1')
//错误监听
redisClient.on("error", err => {
console.log(err)
})
- 基本操作一:set()方法
/**
*
* @param {String} key 键
* @param {String} val 值
* @param {number} timeout 过期时间 单位 s
*/
function set(key, val, timeout = 60 * 60) {
if (typeof val == 'object') {
val = JSON.stringify(val)
}
redisClient.set(key, val)
redisClient.expire(key, timeout)
}
- 基本操作二:get()方法
/**
*
* @param {String} key 键
*/
function get(key) {
const promise = new Promise((resolve, reject) => {
redisClient.get(key, (err,val) => {
if (err) {
reject(err)
return
}
if (val == null) {
resolve(null)
return
}
try {
resolve(
JSON.parse(val)
)
} catch (error) {
resolve(val)
}
})
})
return promise
}
3-2、介绍cookie、session
- 安装 koa-redis koa-generic-session
npm i koa-redis koa-generic-session --save
- 配置 session 、cookie、redis
// app.js
const session = require('koa-generic-session')
const redisStore = require('koa-redis')
app.keys = ['GRFdet_123nf45']
app.use(session({
key:'weibo.sid', //cookie name 默认是 `koa.sid`
prefix:'weibo:sess:', // redis key 的前缀,默认是 `koa:sess:`
cookie:{
path:'/',
httpOnly:true,
maxAge:24 * 60 * 60 * 1000 //ms
},
store:redisStore({
all:`127.0.0.1:6379`
})
}))
3-3、jest 基本使用
- 安装 jest
npm i jest --save-dev
- 配置 jest 信息
(1)测试小案例一 :功能模块测试
注:测试文件命名应该是 什么.test.js
/**
* @description test demo
* @author 浩
*/
function sum (a, b) {
return a+b
}
test('10 + 20 应该等于30', () => {
const res = sum(10,20)
expect(res).toBe(30)
})
- 代码讲解:
(2) 测试案例二:测试 http 请求
- 安装 supertest
npm i supertest --save-dev
- 配置 supertest 信息
/**
* server.js
* @description jest server
* @author 浩
*/
const request = require('supertest')
const server = require('../src/app').callback()
module.exports = request(server)
- 测试
const server = require('./server')
//get请求
test('json 接口返回数据格式正确', async () => {
const res = await server.get('/json')
//判断格式是否一致
expect(res.body).toEqual({
title:'koa2 json'
})
expect(res.body).toBe('koa2 json')
})
//post请求
test('登录', async () => {
const res = await server.post('/login').send(
{
userName:"zhangsan",
password:"123"
}
)
})