Flo*_*ian 7 unit-testing vue.js vitest
我正在使用 vitest 在我的 vue 应用程序中进行一些单元测试。\n我编写了一些测试,但它们失败并显示错误消息:“TypeError: default is not a function”。\n但我不使用名为 default 的函数() 在我的代码中。
\nimport getInfo from './info';\n\nvi.mock('axios', () => {\n return {\n default: {\n get: vi.fn()\n }\n }\n});\n\ntest('fn getInfo() should request api with axios.get url', async () => {\n const spyAxios = vi.spyOn(axios, 'get');\n await getInfo('1234');\n expect(spyAxios).toHaveBeenCalledWith(`${process.env.VUE_APP_API_BASE_URL}`);\n});\nRun Code Online (Sandbox Code Playgroud)\n如果我然后执行npm run test结果如下:
FAIL src/api/info/info.test.js > fn getInfo() should request api with axios.get url\nTypeError: default is not a function\n \xe2\x9d\xaf src/api/info/info.test.js:61:22\n 59| test('fn getInfo() should request api with axios.get url', async () => {\n 60| const spyAxios = vi.spyOn(axios, 'get');\n 61| await getInfo('1234');\n | ^\n 62| expect(spyAxios).toHaveBeenCalledWith(`${process.env.VUE_APP_API_BASE_URL}`);\n 63| });\nRun Code Online (Sandbox Code Playgroud)\ninfo.ts 文件如下所示:
\nimport { useLoginStore } from "../../store/LoginStore";\nimport axios from "axios";\n\n// eslint-disable-next-line\nexport async function getInfo(param: string) : Promise<any> {\n const loginStore = useLoginStore();\n axios.defaults.headers.common = {'Authorization': `Bearer ${loginStore.accessToken}`};\n \n const request = await axios.get(\n process.env.VUE_APP_API_BASE_URL\n );\n\n if (request?.status == 200) {\n return request.data;\n }\n else {\n return null;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n有谁知道这是怎么回事?
\n返回对象中的属性default不是函数 ( default: {...})。相反,您会返回如下内容:
vi.mock('axios', () => ({
default: () => ({
get: vi.fn(),
post: vi.fn(),
}),
}));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10708 次 |
| 最近记录: |