suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie teste ich httpClient mit Axios mit Jest?

Ich habe einen Dienst und manchmal muss ich eine externe API aufrufen. Um das Schreiben dieses Aufrufs zu vereinfachen, habe ich einen httpService erstellt. Derzeit habe ich nur eine Post-Methode, die die URL und Daten empfängt.

import axios from 'axios'

const httpClient = axios.create({
  headers: {
    common: {
      'Content-Type': 'application/json'
    }
  }
})

export async function post(url, data) {
  try {
    const response = await httpClient.post(url, data)
    return response.data
  } catch (error) {
    console.log(error)
    throw new Error('Error in POST request')
  }
}

Ich muss mit Scherz einige Tests für diesen Code schreiben, aber da meine URL generisch ist, möchte ich eine URL wie „http://test.com/api“ übergeben und ein positives Ergebnis vortäuschen. Wie kann ich das machen?

P粉659378577P粉659378577444 Tage vor715

Antworte allen(1)Ich werde antworten

  • P粉575055974

    P粉5750559742023-09-16 18:54:17

    您可以使用 axios-mock-adapter 包:

    例如

    import axios from 'axios';
    import MockAdapter from 'axios-mock-adapter';
    
    const mock = new MockAdapter(axios);
    
    describe('76630221', () => {
        test('should pass', async () => {
            const { post } = await import('./');
            mock.onPost('http://test.com/api').reply(200, {
                code: 0,
                message: null,
            });
            const data = await post('http://test.com/api', { name: 'nick' });
            expect(data).toEqual({ code: 0, message: null });
        });
    });

    Antwort
    0
  • StornierenAntwort