在测试中使用spyOn方法模拟window.open并返回一个虚拟窗口对象,该对象模拟打开的窗口并包含一个document属性。可以使用jasmine.createSpyObj方法创建一个虚拟窗口对象并模拟其document属性。以下是一个示例测试:
it('should open a new window', () => {
const windowSpy = spyOn(window, 'open').and.returnValue(jasmine.createSpyObj('Window', ['document']));
component.openNewWindow();
expect(windowSpy).toHaveBeenCalled();
});
在组件代码中,我们只需调用window.open并使用打开的窗口对象进行操作即可。例如:
openNewWindow() {
const newWindow = window.open('about:blank');
newWindow.document.write('Hello world!');
newWindow.document.close();
}