(六)Jest中鉤子函式

2022-05-19 08:45:10 字數 1853 閱讀 2704

在jest中,如果測試用例中需要使用到某個物件 或 在執行測試**的某個時刻需要做一些必要的處理,直接在測試檔案中寫基礎**是不推薦的,可以使用jest的鉤子函式。

鉤子函式概念:在**執行的某個時刻,會自動執行的乙個函式。
首先我們舉例:新建counter.js檔案,**如下:

export default class counter

addone()

minusone()

}

編寫對應的測試用例:counter.test.js檔案,**如下:

import  counter  from './counter.js'

const counter = new counter();

test('測試counter中addone方法',()=>)

test('測試counter中minusone方法',()=>)

上邊的測試用例可以正常執行,但是addone()函式呼叫的次數會影響counter.number的值,就會影響到minusone方法執行結果。如果你想addone與minusone方法呼叫互不影響時,此時就不得不引入jest的鉤子函式。

1>beforeall:在所有測試用例執行之前執行一次

import  counter  from './counter.js'

let counter =null;

beforeall(()=>)

test('測試counter中addone方法',()=>)

test('測試counter中minusone方法',()=>)

注意:使用beforeall時,需要把之前const型別修改成let 。此時還是會相互影響,依舊不能達成目標。

2>beforeeach:在每個測試用例執行之前執行一次

import  counter  from './counter.js'

let counter =null;

beforeall(()=>)

beforeeach(()=>)

test('測試counter中addone方法',()=>)

test('測試counter中minusone方法',()=>)

此時直接執行npm run test命令時會有乙個用例執行失敗,執行結果如圖所示:  

此時返回的結果已經不是0了 ,而是-1!此時addone 與minusone兩個測試用例已經不會相互影響了。每次執行測試用例前,counter都會初始化!

3>afterall:在所有測試用例執行完之後執行一次

4>aftereach:在每個測試用例執行完成之後執行一次

import  counter  from './counter.js'

let counter =null;

beforeall(()=>)

afterall(()=>)

beforeeach(()=>)

aftereach(()=>)

test('測試counter中addone方法',()=>)

test('測試counter中minusone方法',()=>)

鉤子函式執行順序:

根據上邊案例實際列印結果可以看出這四個鉤子函式的執行順序,如下:

(1)beforeall > (2)beforeeach > (3)aftereach > (4)afterall

靠前的一次優先執行。

Jest 中鉤子函式

首先,我們來寫乙個類,並把它放入乙個檔案 counter.js 中,如下。class counter addone minusone export default counter下面,我們來寫乙個測試檔案,測試這個類。如下。import counter from counter.js const c...

Jest測試初學(五) Jest中的鉤子函式

jest中的鉤子函式相當於生命週期函式,在執行測試用例時,有先後呼叫的順序。一 jest常用的鉤子函式 beforeall 在測試用例執行之前執行 beforeeach 在每乙個測試用例執行之前執行 afterall 在測試用例執行結束之後執行 aftereach 在每乙個測試用例執行之後執行 im...

(七)Jest鉤子函式作用域

1 describe下都可以擁有自己的鉤子函式,使用的鉤子函式對自己的子describe的測試用例也適用。2 每個子describe也可以設定自己需要的鉤子函式,使用的鉤子函式對自己的測試用例適用。3 說明鉤子函式是有作用域的,而且在describe的範圍內,至於執行順序是由外到內。4 descri...