如何在Vitest中配置模拟window对象的方法?
时间: 2024-10-13 11:06:07 浏览: 23
在window.setTimeout方法中传送对象
在Vitest中配置模拟`window`对象的方法,你需要创建一个mock对象(通常是通过`jest.fn()`或`createMockImplementation()`)来替换真实的`window`对象。下面是一个简单的例子:
```javascript
import { createMockFromModule } from 'vite-plugin-vitest';
// 创建一个mock window对象
const mockWindow = {
confirm: jest.fn().mockReturnValue(true), // 模拟confirm函数默认返回true
alert: jest.fn(), // 其他可能用到的window方法
};
// 在Vitest的setup阶段导入并替换真实窗口
globalThis.window = createMockFromModule('window', mockWindow);
```
在这个示例中,我们首先定义了一个mock `window`对象,其中`confirm`方法被设置为总是返回`true`。然后,在Vitest的全局范围内,我们将真实的`window`对象替换为这个mock对象。
记得在完成测试后,如果不再需要模拟,要用`jest.restoreAllMocks()`恢复所有mocked函数,或者在每个测试块结束后使用`afterEach()`清除mock。
阅读全文