在使用 Angular 和 Jest 进行单元测试时,需要使用 window.URL.createObjectURL 方法来模拟 Blob URL。然而,在测试过程中会出现'window is not defined”错误,因为该方法需要在浏览器环境中才能正常工作。
为了解决这个问题,可以使用 jest-global-mocks 库,在 Jest 中模拟 window 对象,并在其中添加 createObjectURL 方法的 mock 实现。以下是示例代码:
// 引入 jest-global-mocks
import 'jest-global-mocks';
// 在模拟的 window 对象上添加 createObjectURL 方法的 mock 实现
window.URL.createObjectURL = jest.fn(() => 'blobURL');
// 在测试中使用 createObjectURL 方法
it('should create blob URL', () => {
const blob = new Blob(['Hello, world!'], { type: 'text/plain' });
const url = window.URL.createObjectURL(blob);
expect(url).toEqual('blobURL');
});