Angular单元测试window.open找不到文档
Angular unit test window.open can not find document
在我的代码库中,我调用 window.open,然后在调用 document.write 函数后,如下所示。
public launch() {
const previewWindow = window.open('');
previewWindow.document.write(
`<iframe width="100%" height="100%" src="${this.src}"></iframe>`
);
previewWindow.document.body.setAttribute(
'style',
'padding: 0; margin: 0; overflow: hidden;'
);
}
但是当我执行单元测试文档时出现以下错误
TypeError: Cannot read properties of undefined (reading 'document')
我的单元测试实现如下
it('should open url', () => {
const windowSpy = spyOn(window, 'open');
component.launch();
expect(windowSpy).toHaveBeenCalled();
});
你的间谍没有return任何东西。当此代码运行时:
const previewWindow = window.open('');
previewWindow.document
previewWindow
仍将为空,这就是您收到错误的原因。
在测试中做这样的事情:
const previewWindowMock = {
document: {
write() { },
body: {
setAttribute() { }
}
}
} as unknown as Window;
const windowSpy = spyOn(window, 'open').and.returnValue(previewWindowMock);
这样,当方法运行时,您将不会有未定义的值。
在我的代码库中,我调用 window.open,然后在调用 document.write 函数后,如下所示。
public launch() {
const previewWindow = window.open('');
previewWindow.document.write(
`<iframe width="100%" height="100%" src="${this.src}"></iframe>`
);
previewWindow.document.body.setAttribute(
'style',
'padding: 0; margin: 0; overflow: hidden;'
);
}
但是当我执行单元测试文档时出现以下错误
TypeError: Cannot read properties of undefined (reading 'document')
我的单元测试实现如下
it('should open url', () => {
const windowSpy = spyOn(window, 'open');
component.launch();
expect(windowSpy).toHaveBeenCalled();
});
你的间谍没有return任何东西。当此代码运行时:
const previewWindow = window.open('');
previewWindow.document
previewWindow
仍将为空,这就是您收到错误的原因。
在测试中做这样的事情:
const previewWindowMock = {
document: {
write() { },
body: {
setAttribute() { }
}
}
} as unknown as Window;
const windowSpy = spyOn(window, 'open').and.returnValue(previewWindowMock);
这样,当方法运行时,您将不会有未定义的值。