? ? ? ? 兩年前接觸到JS的自動(dòng)化測試框架Jasmine(主要是公司日常在用),Jasmine是一個(gè)用于測試JavaScript代碼的行為驅(qū)動(dòng)開發(fā)框架,在這里將平日學(xué)習(xí)積累的內(nèi)容做下整理。
一 、JS的自動(dòng)化框架
javaScript已經(jīng)不光是前段的開發(fā)人員在使用了,很多測試人員也在使用JS的測試框架做自動(dòng)化測試,市面上最常用的JS自動(dòng)化測試框架大概有:Jest、Mocha、Jasmine、Nightwatch等等,各有優(yōu)缺點(diǎn),這里主要介紹下Jasmine框架
二 、jasmine
? ? jasmine是JavaScript的單元測試框架,上手比較容易,語法如下
1、describe方法
? ? 相當(dāng)于測試用例中的測試集(Test Suit)概念

?describe方法有兩個(gè)參數(shù),用來描述測試集的字符串String和測試代碼function,一個(gè)function中可以包含多個(gè)spec(測試點(diǎn)),每個(gè)spec相當(dāng)一個(gè)測試用例。
2、it 方法
????????jasmine中使用it來定義spec(測試點(diǎn)),it 中同樣的也是包含用來描述測試用例的字符串String和測試代碼function,it中的function是具體的測試驗(yàn)證代碼,可以包含多個(gè)expectations(斷言)
比如:expect(a).toEqual(b);
3、expectations
斷言用expect語句來表示,expect有一個(gè)參數(shù), 代表測試的實(shí)際值,它和表示匹配規(guī)則的Matcher鏈接在一起,Matcher帶有期望值;全部的斷言返回true,這個(gè)測試點(diǎn)才通過,只要有一個(gè)斷言返回false,測試點(diǎn)不通過

4、matcher
????????Matcher實(shí)現(xiàn)了斷言的比較操作,將expectation傳入的實(shí)際值和Matcher傳入的期望值進(jìn)行比較,得出斷言的結(jié)果true or false;
常用的matcher方法有:
toBe()、not.toBe()、toEqual()、toBeDefined()、toBeNull()、toContain()等等
5 、Setup和Teardown方法
jasmine中提供了beforeEach、afterEach、beforeAll、afterAll方法。
beforeEach() :在describe函數(shù)中每個(gè)Spec執(zhí)行之前執(zhí)行;
afterEach()? ? :在describe函數(shù)中每個(gè)Spec執(zhí)行之后執(zhí)行;
beforeAll()? ? :在describe函數(shù)中所有的Specs執(zhí)行之前執(zhí)行,且只執(zhí)行一次
afterAll ()? ? ? : 在describe函數(shù)中所有的Specs執(zhí)行之后執(zhí)行,且只執(zhí)行一次

三、總結(jié)
? ? jasmine的基礎(chǔ)方法很簡單,一般在實(shí)際應(yīng)用中會(huì)根據(jù)實(shí)際的case設(shè)計(jì)調(diào)用發(fā)放和嵌套,初學(xué)本地測試的話可以下載jasmine(可以在開源社區(qū)github上下載?jasmine-standalone-2.4.1.zip)
下載解壓之后會(huì)得到:
lib目錄:包含的jasmine的源代碼,把他們(jasmine.css,jasmine.js,jasmine-html.js)引入頁面中,就構(gòu)造了一個(gè)jasmine的運(yùn)行器(Runner)
spec、src?和SpecRunner.html是jasmine的一個(gè)官方完整example,使用瀏覽器直接打開SpecRunner.html就可以看到example的測試結(jié)果