VUE開發(fā)--單元測試(五十一)

一常挚、Mocha簡介

Vue CLI 擁有開箱即用的通過 Jest 或 Mocha 進行單元測試的內(nèi)置選項为障。
Mocha--github
https://mochajs.org/
測試示例
https://vue-test-utils.vuejs.org/zh-cn/

二虑润、安裝組件

npm install --save-dev vue-test-utils

二弥喉、創(chuàng)建測試

  1. 創(chuàng)建測試組件
    Test.vue
<template>
  <span>{{ message }}</span>
</template>

<script>
  export default {
    data () {
      return {
        message: 'hello!'
      }
    },
    created () {
      this.message = 'bye!'
    }
  }
</script>
  1. 創(chuàng)建測試腳本
    Test.spec.js
// 引入測試組件
import { expect } from 'chai';
import { shallowMount } from '@vue/test-utils';
// 測試組件
import Test from '@/components/Test.vue';

// 創(chuàng)建測試套件馒疹,一個測試組件寫一個測試套件
describe('Test.vue', () => {
  // 測試用例污尉,用來測試不同的方法或者顯示的內(nèi)容
  it('測試通過', () => {
    // 定義數(shù)據(jù)
    const message = 'bye!';
    // shallowMount 掛載數(shù)據(jù)
    const wrapper = shallowMount(Test, {
      propsData: { message },
    });
    // 斷言:頁面中是否有message所渲染出來的內(nèi)容
    expect(wrapper.text()).to.include(message);
  });
});

測試腳本應(yīng)該包含一個或多個describe, 每個describe塊應(yīng)該包括一個或多個it塊describe塊稱為"測試套件"(test suite), 表示一組相關(guān)的測試。它是一個函數(shù), 第一個參數(shù)是測試套件的名稱(通常寫測試組件的名稱, 這里即為Test.vue), 第二個參數(shù)是一個實際執(zhí)行的函數(shù)损拢。

it塊稱為"測試用例"(test case), 表示一個單獨的測試, 是測試的最小單位. 它也是一個函數(shù), 第一個參數(shù)是測試用例的名稱(通常描述你的斷言結(jié)果), 第二個參數(shù)是一個實際執(zhí)行的函數(shù).

三、運行測試

npm run test:unit

測試結(jié)果:


測試結(jié)果

四撒犀、Chai斷言庫

所謂斷言, 就是判斷源碼的實際執(zhí)行結(jié)果與預(yù)期結(jié)果是否一致, 如果不一致, 就會拋出錯誤福压。

 // 相等或不相等
  expect(1 + 1).to.be.equal(2);
  expect(1 + 1).to.be.not.equal(3);

  // 布爾值為true
  expect('hello').to.be.ok;
  expect(false).to.not.be.ok;

  // typeof
  expect('test').to.be.a('string');
  expect({ foo: 'bar' }).to.be.an('object');
  expect(foo).to.be.an.instanceof(Foo);

  // include
  expect([1,2,3]).to.include(2);
  expect('foobar').to.contain('foo');
  expect({ foo: 'bar', hello: 'universe' }).to.include.keys('foo');

  // empty
  expect([]).to.be.empty;
  expect('').to.be.empty;
  expect({}).to.be.empty;
  
  // match
  expect('foobar').to.match(/^foo/);

五、Chai斷言庫vue-test-utils的常用API

find(): 返回匹配選擇器的第一個DOM節(jié)點或Vue組件的wrapper, 可以使用任何有效的選擇器
text(): 返回wrapper的文本內(nèi)容
html(): 返回wrapper DOM的HTML字符串

 it('find()/text()/html()方法', () => {
    const wrapper = mount(Counter);
    const h3 = wrapper.find('h3');
    expect(h3.text()).to.equal('Counter.vue');
    expect(h3.html()).to.equal('<h3>Counter.vue</h3>');
  })

trigger(): 在該 wrapper DOM 節(jié)點上觸發(fā)一個事件或舞。

it('trigger()方法', () => {
    const wrapper = mount(Counter);
    const buttonOfSync = wrapper.find('.sync-button');
    buttonOfSync.trigger('click');
    buttonOfSync.trigger('click');
    const count = Number(wrapper.find('.num').text());
    expect(count).to.equal(2);
  })

setData(): 設(shè)置data的屬性并強制更新

it('setData()方法',() => {
    const wrapper = mount(Counter);
    wrapper.setData({foo: 'bar'});
    expect(wrapper.vm.foo).to.equal('bar');
  })
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荆姆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子映凳,更是在濱河造成了極大的恐慌胆筒,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異仆救,居然都是意外死亡抒和,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門彤蔽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摧莽,“玉大人,你說我怎么就攤上這事顿痪∧髟” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵蚁袭,是天一觀的道長征懈。 經(jīng)常有香客問我,道長揩悄,這世上最難降的妖魔是什么卖哎? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮虏束,結(jié)果婚禮上棉饶,老公的妹妹穿的比我還像新娘。我一直安慰自己镇匀,他們只是感情好照藻,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汗侵,像睡著了一般幸缕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晰韵,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天发乔,我揣著相機與錄音,去河邊找鬼雪猪。 笑死栏尚,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的只恨。 我是一名探鬼主播译仗,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼官觅!你這毒婦竟也來了纵菌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤休涤,失蹤者是張志新(化名)和其女友劉穎咱圆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡序苏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年手幢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杠览。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡弯菊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出踱阿,到底是詐尸還是另有隱情管钳,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布软舌,位于F島的核電站才漆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏佛点。R本人自食惡果不足惜醇滥,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望超营。 院中可真熱鬧鸳玩,春花似錦、人聲如沸演闭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽米碰。三九已至窝革,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吕座,已是汗流浹背虐译。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吴趴,地道東北人漆诽。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像锣枝,于是被迫代替她去往敵國和親厢拭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355

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