#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.