Vue Test Utils

Vue Test Utils筆記

test

VUE中的測試

  • 端到端的測試(E2E)
    • 黑盒測試 從UI界面的角度進(jìn)行測試 E2E比較少的一般
  • 單元測試(Unit Test)
    • 測試驅(qū)動開發(fā) 單元測試就是對一個模塊,一個函數(shù),或者一個類進(jìn)行正確性的測試工作
    • Vue中的單元測試主要使用兩個工具 分別是(Karma + Mocha

Karma

  • Karma是一個基于Nodejs的js測試管理工具 該工具在vue中主要作用就是將項(xiàng)目運(yùn)行在各種瀏覽器web進(jìn)行測試

Mocha

  • Mocha 是一個測試框架 在vue-cli中配合
  • Mocha 本身不帶斷言庫 所以必須先引入斷言庫 Chai斷言庫實(shí)現(xiàn)單元測試

斷言庫

  • 斷言 就是判斷源代碼的實(shí)際執(zhí)行結(jié)果是否和預(yù)期結(jié)果一致 如果不一致就拋出一個錯誤暂题,

    var expect = require('chai').expect;
    expect(1+1).to.bt.equal(2);
    
  • chai是一種斷言庫 所以測試用例都應(yīng)該含有一句或者多個斷言亿乳,他是編寫測試用例的關(guān)鍵伸辟。斷言功能由斷言庫來實(shí)現(xiàn)熄守。

Vue 初始化測試

  • npm

  • 我們要測試哪個組件就要保證組件名稱和測試文件要保持一致

  • 后綴要加上 spec.js 的后綴 確保是測試文件

    // 引用vue的需要測試的組件
    import Vue from 'vue'
    import HelloWord from '@/components/HelloWorld'
    // 創(chuàng)建測試套件 一個測試組件寫一個測試套件
    describe('測試套件的名稱',() => {
        // 測試用例 用來測試不同的方法或者顯示不同的內(nèi)容
        it('should render corrent contents', () => {
            // 通過vue來渲染helloWorld
            const Constructor = Vue.extend(HelloWorld)
            const vm = new Constructor().$mount()
            // 判斷頁面中是否有 msg 渲染出來的內(nèi)容
            expect(vm.$el.querySelector('.hello h1').textContent).to.equal('Welcome...')
        })
    })
    
    
  • npm run unit 運(yùn)行項(xiàng)目

Vue使用測試步驟

  • 初始化項(xiàng)目
  • 測試用例報(bào)告
    • 完成了 測試之后 可以查看到 測試用例報(bào)告(index.html)

Vue-text-utils

  • 頁面引用子組件就是 引入加注冊組件就可以有效果展示了

查看功能測試

  • 下載一個 官方的 測試工具包

    • 新建一個 頁面名稱.spec.js 的測試文件
    // 只要有引用了 就可以不用再引用 Vue 了 
    // 然后引用 vue 的測試工具就可以了
    import { mount } from '@vue/test-utils'
    
    // 引用 需要測試的組件 頁面名稱.vue
    import todoMVC from '@/components/todoMVC.vue'
    
    // 創(chuàng)建測試套件
    describe('TodoMVC測試套件',()=>{
        // 創(chuàng)建不同的測試用例
        // 測試查看功能的用例
        it('測試查看功能',()=>{
            // 通過 mount 將組件渲染出來
            const wrapper = mount(todoMVC);
            
            // 尋找指定的 DOM元素  
            // console.log(wrapper.find('.todo-list)) 
            // 如果能找到說明 wrapper 就是我們組件里面的內(nèi)容
            // 通過VM 尋找 data中的數(shù)據(jù)
            // console.log(wrapper.vm)    // vm就是 vue在處理data的時候包含的所有元素
            // console.log(wrapper.vm.todos)
            
            // 然后通過 expect 做斷言
            expect(wrapper.vm.todos.length).to.be.equal(2);
        })
    })
    
    

刪除功能測試

// 創(chuàng)建測試套件
describe('TodoMVC測試套件',()=>{
    // 創(chuàng)建不同的測試用例
    // 測試刪除功能的用例
    it('測試查看功能',()=>{
        // 通過mount將組件渲染出來
        const wrapper = mount(todoMVC);
        // 找到刪除按鈕 做點(diǎn)擊事件
        // 刪除按鈕點(diǎn)擊       如果列數(shù)變少 就表示刪除事件成功了
        console.log(wrapper.find(".destroy"))  // 先打印一下這個button 然后看一下
        // 找到刪除按鈕
        const delbtn = wrapper.find(".destroy")
        // 刪除按鈕點(diǎn)擊
        delbtn.trigger('click')
        // 驗(yàn)證 todos 中有數(shù)據(jù)被刪除   expect 做斷言
        expect(wrapper.vm.todos.length).to.be.equal(1);
    })
})

修改功能測試

@dblclick() 雙擊修改樣式實(shí)現(xiàn)方式
雙擊的時候傳遞已給 todo的樣式值 然后 判斷相等進(jìn)行樣式變動 然后另外一個就已經(jīng)是不相等了然后就不會改變樣式

// 創(chuàng)建測試套件
describe('TodoMVC測試套件',()=>{
    // 創(chuàng)建不同的測試用例
    // 測試修改功能的用例
    it('測試修改功能',()=>{
        // 通過mount將組件渲染出來
        const wrapper = mount(todoMVC);
        // 找到li標(biāo)簽 -> 然后找到label標(biāo)簽
        const li = wrapper.find("li")
        const label = li.find("label")
        // 給label標(biāo)簽雙擊事件
        label.trigger('dblclick');
        // 查看label 標(biāo)簽是否含有 editing 樣式
        // console.log(li.classes() === "");
        // 判斷這個東西是否存在數(shù)組里面include判斷包含 然后進(jìn)行 npm run unit 測試
        expect(li.classes()).to.be.include('editing');
    })
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末幢码,一起剝皮案震驚了整個濱河市但绕,隨后出現(xiàn)的幾起案子示绊,更是在濱河造成了極大的恐慌芒率,老刑警劉巖囤耳,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異偶芍,居然都是意外死亡充择,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門匪蟀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來聪铺,“玉大人,你說我怎么就攤上這事萄窜×逄蓿” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵查刻,是天一觀的道長键兜。 經(jīng)常有香客問我,道長穗泵,這世上最難降的妖魔是什么普气? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮佃延,結(jié)果婚禮上现诀,老公的妹妹穿的比我還像新娘。我一直安慰自己履肃,他們只是感情好仔沿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尺棋,像睡著了一般封锉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上膘螟,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天成福,我揣著相機(jī)與錄音,去河邊找鬼荆残。 笑死奴艾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的内斯。 我是一名探鬼主播蕴潦,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼像啼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了品擎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤备徐,失蹤者是張志新(化名)和其女友劉穎萄传,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜜猾,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秀菱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蹭睡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衍菱。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖肩豁,靈堂內(nèi)的尸體忽然破棺而出脊串,到底是詐尸還是另有隱情,我是刑警寧澤清钥,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布琼锋,位于F島的核電站,受9級特大地震影響祟昭,放射性物質(zhì)發(fā)生泄漏缕坎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一篡悟、第九天 我趴在偏房一處隱蔽的房頂上張望谜叹。 院中可真熱鬧,春花似錦搬葬、人聲如沸荷腊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽停局。三九已至,卻和暖如春香府,著一層夾襖步出監(jiān)牢的瞬間董栽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工企孩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锭碳,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓勿璃,卻偏偏與公主長得像擒抛,于是被迫代替她去往敵國和親推汽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容