突然想到好像沒有介紹到 Scoping 這部分,今天就稍微簡單帶過一下吧~
跟 function 一樣 ,有全域的部分及區域的部分,所以有可能會出現變數污染的問題,這時候就需要清除狀態,避免狀態的改變導致測試的錯誤。
//全域
describe('介紹Scoping', () => {
it('第一個敘述', () => {
//區域
//...
});
it('第二個敘述', () => {
//...
});
});
jest有提供以下幾個方法可以使用
beforeAll
:所在區域內會第一個執行。beforeEach
:每一次的測試前會先執行。afterAll
:所在區域內最後一個執行。afterEach
:每一次的測試後會馬上執行。
let value = 0
describe('scoping', () => {
it('set value to 1', () => {
value = 1 ;
expect(value).toBe(1);
});
it('value is 0', () => {
expect(value).toBe(0);
});
});
例如一開始設定一個 value 為 0 ,並在第一個敘述的時候將 value 的值改為 1 ,那第二個敘述拿到的 value 就已經被污染了,所以這時候可以利用 beforeEach
將測試的值設成預設值,同理也可以使用 afterEach
let value = 0
beforeEach(()=>{
value = 0 ;
});
describe('scoping', () => {
it('set value to 1', () => {
value = 1 ;
expect(value).toBe(1);
});
it('value is 0', () => {
expect(value).toBe(0);
});
});
現在每一次測試之前,value 的值就會從 0 開始了