typescript - vitest mock kan inte mocka axios metod isAxiosError


Jag har en funktion som heter myfunction som använder axios för att anropa en API-endpoint. Här är min implementering i myfunction.ts-filen:

export async function myfunction(request:any) {
    const url = 'https://sample.to';

    try {
            const response = await axios.post(url, request), {
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
    });
    const { value } = response.data;
    return value
    }
    catch (error: unknown) {
        if (axios.isAxiosError(error)) {
            if (error.response?.status === 400) {
                throw new customError({
                    type: 'bad request',
                    status: 400
                });
            } else if (error.response?.status === 401) {
                throw new customError({
                    type: 'unauthorized',
                    status: 401
                });
            }
        }
        else{
            throw new customError({
                type: 'unknown error',
                status: 500
            });
        }
    }
}

Här är filen myfunction.spec.ts som innehåller testfallen och mock-implementeringen:

import { beforeEach, describe, expect, it,vi } from 'vitest';
import { myfunction } from './myfunction.js';
import axios, { AxiosResponse } from 'axios'

vi.mock("axios", () => {
    return {
      default: {
        post: vi.fn(),
        isAxiosError:vi.fn().mockReturnValue(true),
      },
    };
  });

describe('myfunction test cases', () => {

    beforeEach(() => {
        vi.resetAllMocks();

    });

    it('should throw a customError when axios.post returns a 400 error', async () => {
        const mockResponse: AxiosResponse= {
            status:400,
            statusText:'Bad Request',
            headers:{},
            config:{},
            data:{customErrorData:{
                status: 400,
                type: 'bad request',
            },
            },
        }
        
        // Mock the axios.post method to throw an error
        const errorResponse = {
            response: mockResponse,
            isAxiosError: true,
        };
        const requestMock={id:'xyz',refer:'sample'}
        vi.spyOn(axios,'post').mockRejectedValueOnce(errorResponse);
        await expect(requestOboToken(requestMock)).rejects.toMatchObject(mockResponse.data);
        expect(axios.post).toHaveBeenCalledTimes(1);
    });
});

Mitt enhetstest returnerar alltid 500-fel. Det verkar som att det inte kan passa if-villkoret med isAxiosError för att kontrollera axios-fel. Har du något förslag på hur man kan åtgärda detta.