技术选型和知识点介绍(下)

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`
  })
}))

补充:JWT实现用户信息加密存储

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"
        }
    )
})

欢迎访问我的个人博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你听雪飘过的声音

您的鼓励将是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值