Как я могу протестировать действие vuex, которое с помощью jest, внутри которого есть вызов api?

#javascript #vue.js #vuejs2 #jestjs #vuex

#javascript #vue.js #vuejs2 #jestjs #vuex

Вопрос:

АСИНХРОННОЕ ДЕЙСТВИЕ 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 получает:

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

Как я могу протестировать действие ACTION_TYPES.FETCH_CASHLESS_GARAGES???

Ответ №1:

Возможно, у вас макет ответа 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.