iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
Modern Web

我不會測試,所以寫Jest與React Testing Library系列 第 25

Day 25: 那我們來用cypress call api吧

在前面的單元測試部分與前一天的Cypress我們都講到使用假資料來,我們不一定隨時都是使用mock一個假資料(fake data)來當作測試,可能會在某個beta階段時使用beta API來當作真正的模擬使用者在使用的情境.舉個例來說,我們需要在做登入驗證的時候需要authToken,但是在做測試的時候我們可以先用cy.request取得相關token或者是在做別的測試時的測試資料的取得.

cy.request('https://jsonplaceholder.typicode.com/todos/1').as('apiCall');

這段會真的call api出去的動作,這邊打的雖然是萬用API,但你可以想像成取得token的動作?

cy.get('@apiCall').should(res => {
	expect().to.equal() //驗證回傳的資料
		or 
	可能res接到的是token
	window.localstorage.setItem('token', res.token);
	之類的設計
});

那寫到這邊,大家可以想一下那我們如果很多隻測試都要先登入怎辦,這時候我們可以寫成commands

Cypress.commands.add('commands name ex: getToken', (args) => {
	然後這邊我們可以把上面的一些request code拉下來來達到一個共用模組的效果
});

接下來我們只要在各個測試檔案

beforeEach(() => {
	cy.getToken()
});

他就會在各個測試之前都會先去後端取得token,然後執行你接下來的動作,commands這邊,就明天再寫.

參考:

  1. https://docs.cypress.io/api/commands/request

上一篇
Day 24 cypress取得mock的回傳資料
下一篇
Day 26: 出門前的Cypress 雜記
系列文
我不會測試,所以寫Jest與React Testing Library30

尚未有邦友留言

立即登入留言