模拟 axios.post 并捕获请求负载

问题描述 投票:0回答:1

我有

axios.post = jest.fn().mockResolvedValue(< responseData >)

但我需要响应数据根据请求正文中的内容进行更改。请问我怎样才能捕捉到它?类似的东西

axios.post = jest.fn().< get the body >.mockResolvedValue(< responseData based on the body >)

javascript axios jestjs mocking
1个回答
0
投票

您正在寻找

mockImplementation
,那么您可以根据请求负载自定义响应数据。

例如

import axios from 'axios';

describe('78936100', () => {
  test('should pass', async () => {
    axios.post = jest.fn().mockImplementation((url, data) => {
      if (data.id === 1) {
        return { data: 'a' };
      }
      if (data.id === 2) {
        return { data: 'b' };
      }
    });

    const res1 = await axios.post('http://localhost:8080', { id: 1 });
    expect(res1.data).toEqual('a');

    const res2 = await axios.post('http://localhost:8080', { id: 2 });
    expect(res2.data).toEqual('b');
  });
});
© www.soinside.com 2019 - 2024. All rights reserved.