iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0

突然想到好像沒有介紹到 Scoping 這部分,今天就稍微簡單帶過一下吧~

Scoping

跟 function 一樣 ,有全域的部分及區域的部分,所以有可能會出現變數污染的問題,這時候就需要清除狀態,避免狀態的改變導致測試的錯誤。

	
//全域
describe('介紹Scoping', () => {

    it('第一個敘述', () => {
				//區域
        //...
    });

    it('第二個敘述', () => {
        //...
    });
});

jest有提供以下幾個方法可以使用

  1. beforeAll :所在區域內會第一個執行。
  2. beforeEach :每一次的測試前會先執行。
  3. afterAll :所在區域內最後一個執行。
  4. 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 開始了


上一篇
Day 14 - userEvent 模擬使用者操作
下一篇
Day 16 - 3A Pattern & TDD part 1
系列文
React Clean Code And Unit Tests - 利用測試寫出人類看得懂的React程式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言