vue中關於測試的知識介紹
文章目錄
前言
Vue-Cli 推薦兩種測試分別是:端到端的測試(E2E) 和 單元測試(Unit Test)
一、端到端(E2E)
端(消費端)到端(產品端)的測試(E2E (End-to-End)), 它用來測試一個應用從頭到尾的流程是否和設計時候所想的一樣。簡而言之,它從一個使用者的角度出發,認為整個系統都是黑箱,只有UI會暴露給使用者
二、單元測試(Unit Test)
測試驅動開發(TDD: Test-Driven Development), 單元測試是用來對一個模組、一個函式或者一個類來進行正確性檢驗的測試工作。
Vue中的單元測試中主要使用兩個工具分別是( Jest +Karma+ Mocha(Chai) )
Karma
Karma是一 個基於Node.js的JavaScript測試執行過程管理工具( Test Runner)。該工具在Vue中的主要作用是將專案執行在各種主流Web瀏覽器進行測試。
換句話說,它是一個測試工具,能讓你的程式碼在瀏覽器環境下測試。
需要它的原因在於,你的程式碼可能是設計在瀏覽器端執行的,在node環境下測試可能有些bug暴露不出來;另外,瀏覽器有相容問題, karma提供了手段讓你的程式碼自動在多個瀏覽器( chrome,firefox ,ie等)環境下執行。
如果你的程式碼只會執行在node端,那麼你不需要用karma 。Mocha
mocha(摩卡)是一個測試框架,在vue-cli中配合。 mocha本身不帶斷言卡,所以必須先引入斷言庫,Chai斷言庫實現單元測試。
Mocha的常用命令和用法不算太多,而Chai斷言庫可以看Chai.js斷言庫API中文文件,很簡單,多查多用就能很快掌
握。
斷言庫
所謂“斷言” ,就是判斷原始碼的實際執行結果與預期結果是否-致,如果不一致就丟擲一個錯誤。下面這句斷言的意思是,呼叫add(1, 1) ,結果應該等於2.
var expect = require('chai).expect;
expect(1 + 1)).to.be.equal(2);
Chai是一種斷言庫(http://chaijs.com/)
所有的測試用例( it塊)都應該含有一句或多句的斷言。 它是編寫測試
用例的關鍵。斷言功能由斷言庫來實現。
常用的關鍵字如下,具體意義及使用方法,可參考:https://www.jianshu.com/p/f200a75a15d2/
- to
- be
- been
- is
- that
- which
- and
- has
- have
- with
- at
- of
- same
Jest (一般使用這個,請仔細閱讀)
官方提供的單元測試的模組@vue/test-utils,它使用的是Jest風格的expect斷言。
具體示例如下:
// 掛載這個元件
const wrapper = shallowMount(MyComponent)
// 這裡是一些 Jest 的測試,你也可以使用你喜歡的任何斷言庫或測試
describe('MyComponent', () => {
// 檢查原始元件選項
it('has a created hook', () => {
expect(typeof MyComponent.created).toBe('function')
})
// 評估原始元件選項中的函式的結果
it('sets the correct default data', () => {
expect(typeof MyComponent.data).toBe('function')
const defaultData = MyComponent.data()
expect(defaultData.message).toBe('hello!')
})
// 檢查 mount 中的元件例項
it('correctly sets the message when created', () => {
expect(wrapper.vm.$data.message).toBe('bye!')
})
// 建立一個例項並檢查渲染輸出
it('renders the correct message', () => {
expect(wrapper.text()).toBe('bye!')
})
})
注:
- 一個it就相當於一個測試用例
- 一個元件一般就對應一個測試檔案,檔案後以為spec.js結尾
目錄結構如下:
- jest使用api,可參考官方檔案https://vue-test-utils.vuejs.org/api/
- 寫好後,使用npm run unit指令執行,進行測試
作者:doubleyong
公眾號:bug收集
部落格:bugshouji.com (專門解決與收集bug的網站)
相關文章
- 關於mysql基礎知識的介紹MySql
- Java 中關於protected的介紹Java
- 簡單介紹一些關於 Kaggle 比賽的知識
- Cache中的MESI協議基本知識介紹協議
- 軟體測試知識儲備:關於「登入安全」的基礎知識,你瞭解多少?
- JDE 的掃盲知識介紹。。。
- 混沌測試介紹
- 關於發版測試的認知與案例
- thinkPHP模板中的語法知識詳細介紹(十二)PHP
- 【效能測試】移動測試md知識總結第1篇:移動端測試課程介紹【附程式碼文件】
- Epub基礎知識介紹
- Vue 關鍵概念介紹Vue
- 在SQL Server中,關於with as使用介紹SQLServer
- 工控組態程式設計相關知識點介紹程式設計
- 測試模組知識 Tree
- 資料庫安全知識介紹資料庫
- Oracle database 補丁知識介紹OracleDatabase
- shiro入門知識介紹
- 關於高水位的知識
- Servlet中關於web.xml的測試ServletWebXML
- jar包涉及到的知識介紹JAR
- 關於vue2自己得到的陳果(不懂的知識點)Vue
- 軟體測試相關理論知識有哪些?
- mysqlslap壓力測試介紹MySql
- 效能測試:主流壓測工具介紹
- javascript中關於匿名函式高階介紹JavaScript函式
- 資料庫基礎知識介紹!資料庫
- 區塊鏈入門知識介紹!區塊鏈
- [推薦]WebService開發知識介紹Web
- js中關於定義類的幾種方式介紹JS
- 關於LLC知識1
- 效能測試知識體系
- 【1】測試基礎知識
- 高併發架構的TCP知識介紹架構TCP
- 高併發架構的CDN知識介紹架構
- 關於知識付費的思考
- 關於序列化的知識
- 關於null值的小知識Null