天天看點

mock...前言一、Mock二、FastMock模拟接口

Mock

  • 前言
  • 一、Mock
    • 1.簡單引入
    • 2.攔截請求
  • 二、FastMock模拟接口
    • 1.基本資料
    • 2.帶參資料
    • 3.資料制造

前言

主要作用是生成随機資料,攔截 Ajax 請求。也可以使用Mock API網站來定義自己的測試接口

一、Mock

vue內建

1.簡單引入

npm install mockjs
           
var Mock = require('mockjs')
var data = Mock.mock({
    'list|1-10': [{
        'id|+1': 1
    }]
})
           

2.攔截請求

編寫 mock 的js檔案

import Mock from 'mockjs'
import User from './user'

// 劫持/m1/user/1的url,并傳回mock資料
Mock.mock('/m1/user/1', 'post', () => { 
  return User.userInfo(1)
})
           

然後 main.js 中判斷引入

// 判斷運作環境或者判斷是否為MOCK模式
if (process.env.MOCK) {    
  require('./mock/index.js')
}
           

或修改vue.config.js

devServer: {
	before: require("./mock/index.js"),
}
           

二、FastMock模拟接口

自定義傳回請求mock資料

1.基本資料

響應配置

{
  "code": 200,
  "data": {
    "list|10": [{
      "name": "@cname",
      "age": "@integer(20, 60)",
      "sex": "@integer(1, 2)",
      "time": "@datetime('yyyy-MM-dd HH:mm:ss')"
    }],
    "type": "1"
  },
  "message": "查詢成功"
}
           

響應結果

{
  "code": 200,
  "data": {
    "list": [
      {
        "name": "馮超",
        "age": 38,
        "sex": 1,
        "time": "2003-04-12 00:56:33"
      },
	  ...省略9條資料
    ],
    "type": "1"
  },
  "message": "查詢成功"
}
           

2.帶參資料

響應配置

{
  "code": 200,
  "data": {
    "success": function({_req, Mock}) {
      let body = _req.body;
      return body.username === 'admin' && body.password === '123456';
    },
    "user": function({_req, Mock}) {
      let body = _req.body;
      if (body.username === 'admin' && body.password === '123456') {
        return Mock.mock({
          username: "admin",
          email: "@email"
        });
      } else {
        return null;
      }
    },
  },
  "message": "校驗成功"
}
           

響應結果

{
  "code": 200,
  "data": {
    "success": true,
    "user": {
	  "username": "admin",
	  "email": "[email protected]"
    }
  },
  "message": "校驗成功"
}
           

常用參數說明

官網參數

對象 描述
Mock Mock 對象
_req.url 獲得請求 url 位址
_req.method 擷取請求方法
_req.params 擷取 url 參數對象
_req.querystring 擷取查詢參數字元串(url中?後面的部分),不包含 ?
_req.query 将查詢參數字元串進行解析并以對象的形式傳回,沒有查詢參數字元串則傳回一個空對象
_req.body 當 post 請求以 x-www-form-urlencoded 方式送出時,我們可以拿到請求的參數對象
_req.path 擷取請求路徑名
_req.header 擷取請求頭對象

3.資料制造

官網示例

// 中文名與英文名
"name": "@name()"
"cname": "@cname()"

// 郵箱與位址
"email": "@email()"
"city": "@city(true)"

// 1 至 80
"age": "@integer(1, 80)"

// 1 或 2
"sex|1-2": 1

// true 或 false
"success|1-2": true

// 保留3位小數
"price|1-100.3": 1.123

// 1949-10-01 06:06:06
"time": "@datetime()"