Wie teste ich httpClient mit Axios mit Jest?
P粉659378577
P粉659378577 2023-09-15 20:55:32
0
1
708

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粉659378577
P粉659378577

Antworte allen(1)
P粉575055974

您可以使用 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 });
    });
});
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage