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