中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

用Jest測試Axios請求

發(fā)布于:2021-02-02 15:10:23

0

1741

0

axios 測試 Jest

假設(shè)我們有一個簡單的異步函數(shù),它調(diào)用一些遠程數(shù)據(jù)。我們傳入查詢和配置對象。要查看可通過此請求配置傳遞的內(nèi)容的示例,請參閱Axios文檔。在本例中,我的查詢只是配置中的url鍵,例如/user,它可能是一個API端點。此函數(shù)僅返回來自axios(端點的實際響應(yīng)主體)的數(shù)據(jù)。如果我們無法從端點得到響應(yīng),函數(shù)將捕獲并拋出一個控制臺錯誤。

request.js

export const fetchData = async (query, config
) => {
 try {
   const { data } = await axios.request({
     method: 'get',
     url: encodeURI(query),
     ...config
   });

   return data;
 } catch (e) {
   console.error('Could not fetchData', e);
 }
};


現(xiàn)在讓我們創(chuàng)建一個新文件request.spec.js我們要添加兩個導(dǎo)入

import mockAxios from 'axios';
import { fetchData } from '../request';


為了測試這一點,我們需要使用Axios的模擬版本,該版本可以方便地從核心庫導(dǎo)入。我們現(xiàn)在準備編寫測試

 it('should call a fetchData function', done => {
   fetchData('/test', {}).then(response => {
     expect(response).toEqual({
       data: {},
     });
   });
   expect(mockAxios.request).toHaveBeenCalledWith({
     method: 'get',
     url: '/test'
   });
   expect(mockAxios.request).toHaveBeenCalledTimes(1);
   expect(consoleErrorSpy).not.toHaveBeenCalled();
   done();
 });


首先我們用一個測試查詢和一個空配置調(diào)用then函數(shù),以確保然后測試我們的響應(yīng)是正確的?,F(xiàn)在我們正在測試mockAxios.request是否用我們期望的參數(shù)調(diào)用了它,是否只調(diào)用了一次,是否我們的函數(shù)沒有拋出錯誤。最后,我們調(diào)用done()回調(diào),它讓我們知道異步操作已經(jīng)完成。