【发布时间】:2022-01-07 16:59:21
【问题描述】:
我正在尝试为以下功能编写单元测试:
focusSkipButton(event: MouseEvent, isLoggedIn: boolean): void {
if (isLoggedIn) {
return;
}
const button: HTMLButtonElement = document.querySelector('.skip-btn');
const overlay = document.querySelector('.story-viewer-login-container');
const target = event.target as Element;
if (event.target !== overlay &&
(target.parentElement && target.parentElement !== overlay)) {
button.focus();
}
}
这是我想出的:
it('should set focus on skip buuton', fakeAsync(()=>{
let button = document.createElement('button');
spyOn(document, 'querySelector').and.returnValue(button);
spyOn(button, 'focus');
var event = new MouseEvent('click', {
view: window,
bubbles: true,
cancelable: true
});
let parent = document.createElement('div');
let child = document.createElement('div');
parent.append(child);
child.dispatchEvent(event);
component.focusSkipButton(event, false);
tick();
expect(button.focus).toHaveBeenCalled();
component.focusSkipButton(event, true);
tick();
expect(button.focus).not.toHaveBeenCalled();
}));
但是在运行这个测试时我得到一个错误:
Cannot read properties of null (reading 'parentElement')
我不确定我在这里缺少什么。 任何帮助将不胜感激。
【问题讨论】:
标签: angular typescript unit-testing jasmine