Skip to main content

依赖第三方库

如果调用了第三方模块,比如 Axios,那应该如何测试?

mock 第三方库/模块的函数,和我们 mock 自己写的函数是一样的,

唯一的区别只是,将路径改成了模块名

// doubleUserAge.ts

import axios from "axios";

interface User {
name: string;
age: number;
}

export async function doubleUserAge() {
const user: User = await axios("/user/1");
return user.age * 2;
}
// doubleUserAge.spec.ts

vi.mock("axios");

test("第三方库/模块: Axios", async () => {
vi.mocked(axios).mockResolveValue({ name: "nansen", age: 2 });

const r = await doubleUserAge();
expect(r).toBe(4);
});

mockResolveValue 相对,还有 mockRejectValue 方法。

如果使用的不是 axios('/user/1') 而是 axios.get('/user/1'),那只需要改为 vi.mock(axios.get) 即可。