Javascript 在为addEventListener编写单元测试时遇到问题
我想为下面的函数编写一个jest单元测试,所以我得到了一个错误Javascript 在为addEventListener编写单元测试时遇到问题,javascript,unit-testing,dom,jestjs,Javascript,Unit Testing,Dom,Jestjs,我想为下面的函数编写一个jest单元测试,所以我得到了一个错误 const variableski = document.querySelector('.skipnav'); variableski.addEventListener('click', () => { this.somefunction(); }); 以下是单元测试解决方案: index.js: class-SomeClass{ skipToBotHandler(){ const skipNav=
const variableski = document.querySelector('.skipnav');
variableski.addEventListener('click', () => {
this.somefunction();
});
以下是单元测试解决方案:
index.js
:
class-SomeClass{
skipToBotHandler(){
const skipNav=document.querySelector('.skipNav');
skipNav.addEventListener('单击',()=>{
这个.skiplingfocushandler();
});
}
SkiplingFocusHandler(){}
}
导出{SomeClass};
index.test.js
:
从“/”导入{SomeClass};
描述('60014903',()=>{
之后(()=>{
开玩笑。恢复记忆();
jest.resetAllMocks();
});
它('应该通过',()=>{
jest.spyOn(SomeClass.prototype,“SkiplingFocushandler”);
常数mSkipNav={
addEventListener:jest.fn().mockImplementationOnce((事件,处理程序)=>{
handler();
}),
};
document.querySelector=jest.fn().mockReturnValueOnce(mSkipNav);
const instance=new SomeClass();
skipToBotHandler();
expect(document.querySelector).toBeCalledWith('.skipnav');
expect(mSkipNav.addEventListener).toBeCalledWith('click',expect.any(函数));
expect(instance.skiplingfocushandler).toBeCalledTimes(1);
});
});
100%覆盖率的单元测试结果:
通过src/stackoverflow/60014903/index.test.js(10.203s)
60014903
✓ 应通过(9ms)
----------|----------|----------|----------|----------|-------------------|
文件|%Stmts |%Branch |%Funcs |%Line |未覆盖行|s|
----------|----------|----------|----------|----------|-------------------|
所有文件| 100 | 100 | 100 | 100 ||
index.js | 100 | 100 | 100 | 100 ||
----------|----------|----------|----------|----------|-------------------|
测试套件:1个通过,共1个
测试:1项通过,共1项
快照:共0个
时间:11.538秒
源代码: