间接层处理技巧
❗ 没有通过加一层间接层处理不了的问题,如果有,就再加一层。
这个技巧非常强大,可以将所有处理间接输入的方式,转换成处理函数或对象的形式。
也能使用该技巧简化复杂的测试或业务代码。
比如,我们有下面代码:
// doubleHeight.ts
export function doubleHeight() {
return innerHeight * 2;
}
it("double innerHeight", () => {
vi.stubGlobal("innerHeight", 100);
const r = doubleHeight();
expect(r).toBe(200);
});
如果不想直接直接操作全局变量,我们可以加一层中间层来处理:
// doubleHeight.ts
import { innerHeightFn } from "./window";
export function doubleHeight() {
return innerHeightFn() * 2;
}
// window.ts
export function innerHeightFn() {
return innerHeight;
}
// doubleHeight.spec.ts
vi.mock("./window.ts", () => {
return {
innerHeightFn: () => 100,
};
});
it("double innerHeight", () => {
const r = doubleHeight();
expect(r).toBe(200);
});