簡體   English   中英

axios 得到 404 因為 axios 模擬適配器

[英]axios get 404 because axios mock adapter

我購買了帶有 axios-mock-adapter 的 Metronic React 模板。 I still need mock request for Authentication, but when I use Axios to fetch public API with Axios.get() returned 404 or undefined (see my redux modules below).

redux模塊

 import { createSlice } from "@reduxjs/toolkit"; import axios from "axios"; import { API_URL } from "../../support/api"; const initialState = { listLoading: false, actionsLoading: false, totalCount: 0, entities: null, equipmentForEdit: undefined, error: null, }; const { actions, reducer } = createSlice({ name: "ref_equipment", initialState, reducers: { startCall: (state) => { state.error = null; state.listLoading = true; }, allReffEquipmentFetched: (state, action) => { state.listLoading = false; state.error = null; state.entities = action.payload; }, catchError: (state, action) => { state.error = action.payload; }, }, }); export default reducer; export const { startCall, allReffEquipmentFetched, catchError, } = actions; export const fetchAllReffEquipment = () => async (dispatch) => { dispatch(actions.startCall()); try { const response = await axios.get(`${API_URL}/public`); console.log(response); // this console.log never never showed up when I call this function // note: this API_URL is correct } catch (err) { console.log(err); // get error 404 window.alert(`Something went wrong. ${err}`); dispatch(catchError(err)); } };

根索引.js

 import axios from "axios"; import * as _redux from "./redux"; import store, { persistor } from "./redux/store"; import App from "./app/App"; _redux.mockAxios(axios); // if I comment this line, my pubilc API call fetched, but Authentication doesnt work _redux.setupAxios(axios, store); ReactDOM.render( <MetronicI18nProvider> <MetronicLayoutProvider> <MetronicSubheaderProvider> <MetronicSplashScreenProvider> <App store={store} persistor={persistor} basename={PUBLIC_URL} /> </MetronicSplashScreenProvider> </MetronicSubheaderProvider> </MetronicLayoutProvider> </MetronicI18nProvider>, document.getElementById("root") );

模擬Axios.js

 import MockAdapter from "axios-mock-adapter"; import mockAuth from "../../app/modules/Auth/__mocks__/mockAuth"; export default function mockAxios(axios) { const mock = new MockAdapter(axios, { delayResponse: 300 }); // if this line commented, fetch public API from redux running well but authentication doesn't mockAuth(mock); return mock; }

我如何同時使用(模擬請求和真實請求)。 謝謝

您正在直接使用庫中的“axios”,然后撥打電話。 它實際上調用了 URL。

如下所示創建一個 Axios 實例,然后在模擬適配器中使用這個導出的 axios 實例,它將起作用。

export const axiosInstance = axios.create({
  baseURL: API_URL,
});

const mock = new MockAdapter(axiosInstance, { delayResponse: 300 });

暫無
暫無

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

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