天天看點

Nuxtjs 2 - axios & mockjsAxios Module - XHR 封裝Mockjs - 測試測試可能遇到的坑

文章目錄

  • Axios Module - XHR 封裝
    • 安裝
    • 自定義 Axios
  • Mockjs - 測試
    • 安裝
  • 測試
  • 可能遇到的坑
    • request.upload.addEventListener is not a function
承接上一篇, 繼續整合 axios module 和 mockjs …

Axios Module - XHR 封裝

差別于直接引入 Axios 的做法, 這裡使用 Axios Module, 後者是 Nuxt 提供的官方內建.

ref: https://axios.nuxtjs.org/

package.json 中,

"dependencies": { 
  ...
  "@nuxtjs/axios": "^5.3.6"
}
           

安裝

如果在腳手架建構過程已經選擇了 axios module, 可以忽略這一步.

npm install @nuxtjs/axios
           

nuxt.config.js

module.exports = {
  modules: [
    '@nuxtjs/axios',
  ],
  axios: {
  }
}
           

$axios 對象會被綁定到執行個體原型 (this 上), 使用方式和原生 Vue 中一樣:

methods: {
    async doRequest() {
      const res = await this.$axios.get('/demo/test')
    }
  }
           

自定義 Axios

如果需要自定義 axios, 添加攔截器判斷請求/響應, 異常處理等, 需要将其作為 plugin 引入.

在 nuxt.config.js 中, 加入:

Nuxtjs 2 - axios & mockjsAxios Module - XHR 封裝Mockjs - 測試測試可能遇到的坑

然後在 ./plugins 目錄下建立 axios.js, 加入需要的攔截方法:

Nuxtjs 2 - axios & mockjsAxios Module - XHR 封裝Mockjs - 測試測試可能遇到的坑

更多用法參考: https://axios.nuxtjs.org/helpers

Mockjs - 測試

作用: 攔截 XHR, 不借助後端, 在前端即可完成資料模拟和測試. 具體的使用方法教程很多, 就不再贅述了.

安裝

npm install --save-dev mockjs
           

同樣先在 nuxt.config.js 中 plugins 下注冊插件 @/plugins/mockjs. 然後在 ./plugins 下建立檔案 mockjs.js.

Nuxtjs 2 - axios & mockjsAxios Module - XHR 封裝Mockjs - 測試測試可能遇到的坑

測試

修改 Nuxt index.vue:

Nuxtjs 2 - axios & mockjsAxios Module - XHR 封裝Mockjs - 測試測試可能遇到的坑

執行指令 npm run dev, 點選頁面按鈕觀察控制台可以看到, 無論是 axios module 的攔截, 還是 mockjs 都已正常工作:

Nuxtjs 2 - axios & mockjsAxios Module - XHR 封裝Mockjs - 測試測試可能遇到的坑

可能遇到的坑

request.upload.addEventListener is not a function

在執行最終測試的時候如果控制台提示如下資訊:

request.upload.addEventListener is not a function

是由于 Mockjs 造成的, 原因和解決辦法請參考筆者的另一篇文章…

下一篇