Maison > Questions et réponses > le corps du texte
J'utilise Vitest pour effectuer des tests unitaires dans mon application Vue. J'ai écrit quelques tests mais ils échouent avec le message d'erreur : "TypeError : la valeur par défaut n'est pas une fonction". Mais je n'utilise pas de fonction nommée default() dans mon code.
import getInfo from './info'; vi.mock('axios', () => { return { default: { get: vi.fn() } } }); test('fn getInfo() should request api with axios.get url', async () => { const spyAxios = vi.spyOn(axios, 'get'); await getInfo('1234'); expect(spyAxios).toHaveBeenCalledWith(`${process.env.VUE_APP_API_BASE_URL}`); });
Si j'exécute ensuite npm run test
le résultat est le suivant :
FAIL src/api/info/info.test.js > fn getInfo() should request api with axios.get url TypeError: default is not a function ❯ src/api/info/info.test.js:61:22 59| test('fn getInfo() should request api with axios.get url', async () => { 60| const spyAxios = vi.spyOn(axios, 'get'); 61| await getInfo('1234'); | ^ 62| expect(spyAxios).toHaveBeenCalledWith(`${process.env.VUE_APP_API_BASE_URL}`); 63| });Le fichier
info.ts ressemble à ceci :
import { useLoginStore } from "../../store/LoginStore"; import axios from "axios"; // eslint-disable-next-line export async function getInfo(param: string) : Promise<any> { const loginStore = useLoginStore(); axios.defaults.headers.common = {'Authorization': `Bearer ${loginStore.accessToken}`}; const request = await axios.get( process.env.VUE_APP_API_BASE_URL ); if (request?.status == 200) { return request.data; } else { return null; } }
Est-ce que quelqu'un sait ce qui se passe ?
P粉9856865572023-10-30 13:16:50
renvoie le default
属性不是函数(default: {...}
) dans l'objet. Au lieu de cela, vous recevrez quelque chose comme ceci :
vi.mock('axios', () => ({ default: () => ({ get: vi.fn(), post: vi.fn(), }), }));