Vue项目中使用mock

前后端分离的开发模式,在自己单元测试的时候mock十分有作用,现就在vue中使用mock做一个总结,如有不到之处请指正。
mock文档:http://mockjs.com/0.1/#mock
1、搭建vue项目(不多说,直接用cli就可以);
2、使用npm install mockjs --save-dev来安装mockjs;

G2JVZEC%AUEZ)[email protected]

以上图片后面主要用到的文件。
3、创建mock文件夹,在该文件夹下创建mock.js。(这里有一些我自己模拟的代码,可以不关注)

import Mock from 'mockjs';

// 配置拦截 ajax 的请求时的行为,支持的配置项目有 timeout。
 Mock.setup({
    timeout: '200 - 400'
})

const vCode = '123456';

function getVerificatCode (prarms) {
    const prarmsObj = JSON.parse(prarms.body);
    return Object.assign(prarmsObj, {vCode: vCode});
}

function loginFun (prarms) {
    const prarmsObj = JSON.parse(prarms.body);
    if (prarmsObj.code === vCode) {
        return {code:1, text:'登录成功'}
    } else {
        return {code:2, text:'验证码有误,登录失败'}  
    }
}
 
// Mock.mock( url, post/get , 返回的数据);
Mock.mock('/getVerificatCode', 'post', getVerificatCode); // 获取验证码
Mock.mock('/login', 'post', loginFun); //登录

4、入口js(main.js)里引入mockjs

import Vue from 'vue'
import App from './App'
import router from './router'
import iView from 'iview'
import axios from './http/api'
import 'iview/dist/styles/iview.css'

// 引入mockjs
require('./mock/mock.js')

Vue.config.productionTip = false
Vue.prototype.axios = axios
Vue.use(iView)

new Vue({
  el: '#app',
  router,
  components: { App },
  template: ''
})

5、创建http文件夹,在该文件夹下创建api.js用来对axios做了拦截设置处理。

import axios from 'axios'
 
axios.defaults.headers.get['Content-Type'] = 'application/x-www-form-urlencoded'
 
// 请求拦截器
axios.interceptors.request.use(config => {
    const token = localStorage.getItem('userToken');
    if (token) { // 判断是否存在token,如果存在的话,则每个http header都加上token
      config.headers.accessToken = token;
    }
    return config;
  }, 
  error => {
    return Promise.reject(error);
  })

// 响应拦截器
axios.interceptors.response.use(response => {
    return response;
  },
  error => {
    return Promise.reject(error);
  })
 
export default axios

6、最后就是将axios放置在vue的原型上Vue.prototype.axios = axios,这样用axios请求mock数据的同时也可执行拦截操作。

你可能感兴趣的:(Vue项目中使用mock)