依赖第三方库
如果调用了第三方模块,比如 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) 即可。