Skip to main content

间接层处理技巧

没有通过加一层间接层处理不了的问题,如果有,就再加一层。

这个技巧非常强大,可以将所有处理间接输入的方式,转换成处理函数或对象的形式。

也能使用该技巧简化复杂的测试或业务代码。

比如,我们有下面代码:

// 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);
});