Maison > Questions et réponses > le corps du texte
J'ai un service et parfois j'ai besoin d'appeler une API externe. Pour rendre cet appel plus facile à écrire, j'ai créé un httpService. Actuellement, je n'ai qu'une méthode de publication qui reçoit l'URL et les données.
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') } }
Je dois écrire quelques tests pour ce code en utilisant Jest, mais comme mon URL est générique, je veux transmettre une URL comme "http://test.com/api" et simuler un résultat positif. Comment puis-je faire ceci?
P粉5750559742023-09-16 18:54:17
Vous pouvez utiliser le package axios-mock-adapter :
Par exemple
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 }); }); });