簡體   English   中英

我如何測試 vuex 動作,它帶有 jest 里面有一個 api 調用?

[英]How can I test vuex action which with jest which has an api call inside it?

ASYNC ACTION VUEX :這是將從組件調用的異步操作,它由一個函數 fetchGaragesData 組成,該函數將進行 api 調用以從服務器獲取數據。

[ACTION_TYPES.FETCH_CASHLESS_GARAGES]: async (
        { dispatch, commit, state, rootState },
        payload
    ) => {
        commit(MUTATION_TYPES.SET_MISC_KEYS, {
            fetchingCashlessGaragesInitiated: true,
        })
        let { insurerSlug, makeId, rtoCode } = payload
        const url = ApiUrls.getCashlessGarages + `${insurerSlug}/${makeId}`
        const response = await fetchGaragesData(url, rtoCode)
        dispatch(ACTION_TYPES.MODIFY_RTO_WISE_GARAGES_DATA, response)
    },

fetchGaragesData 的實現:這個函數在內部調用 axios get:

export const fetchGaragesData = (url: string, rtoCode: string) => {
    return get(url, {
        rto_code: rtoCode,
        all_states_data: true,
    })
}

如何測試操作 ACTION_TYPES.FETCH_CASHLESS_GARAGES ???

您可能有 API 模擬響應。 因此,在您的規范文件中,您需要為該特定 API 調用添加模擬響應。

將您的文件包含在具有實際后端 API 調用的規范文件中。 例如:

import someName from 'path of file'

jest.mock('someName', () => ({
 fetchGaragesData: jest.fn((url, rtoCode) =>
  success({ body: 
    Here comes your response body
 }})
)

url 和 rtoCode 應該是 API 調用文件中使用的變量的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM