Javascript 在已创建的钩子中模拟addEventListener

Javascript 在已创建的钩子中模拟addEventListener,javascript,vue.js,jestjs,mocking,vue-test-utils,Javascript,Vue.js,Jestjs,Mocking,Vue Test Utils,我正在尝试在我创建的App.vue钩子中测试事件侦听器。测试通过了第一个断言,第二个断言失败。从终端中可以看到,问题似乎是测试期望[Function mockConstructor],但收到了[Function-bound mockConstructor]作为第二个参数。我不确定是什么问题。任何指点都将不胜感激 在App.vue组件中: 异步创建(async){ window.addEventListener('orientationchange',this.changeHandler); 等待

我正在尝试在我创建的
App.vue
钩子中测试事件侦听器。测试通过了第一个断言,第二个断言失败。从终端中可以看到,问题似乎是测试期望
[Function mockConstructor]
,但收到了
[Function-bound mockConstructor]
作为第二个参数。我不确定是什么问题。任何指点都将不胜感激

App.vue
组件中:

异步创建(
async){
window.addEventListener('orientationchange',this.changeHandler);
等待someModuleFunction();
someOtherModuleFunction();
},
方法:{
changeHandler(){/*函数代码在这里。*/},
}
App.spec.js
test中:

从'@vue/test-utils'导入{createLocalVue,shallowMount};
从“@/App”导入应用程序;
从“waait”导入等待;
const localVue=createLocalVue();
让我们一起来吧;
让我们加上;
描述('app.vue',()=>{
在每个之前(()=>{
windowSpy=jest.spyOn(全局“窗口”、“获取”);
mockAdd=jest.fn();
windowSpy.mockImplementation(()=>({
addEventListener:mockAdd,
}));
});
之后(()=>{
windowSpy.mockRestore();
mockAdd.mockRestore();
});
常量shallowMountFunction=(options={})=>shallowMount(App{
localVue,
存根:[“路由器视图”],
…选项,
});
描述('created hook',()=>{
它('调用预期函数',async()=>{
期望.断言(2);
const spy=jest.spyOn(App.methods,'changeHandler')
shallowMountFunction();
等待等待;
期望(mockAdd).达到调用时间(1);
期望(mockAdd).tohavebeincalledwith('orientationchange',spy);
});
});
})

Vue组件方法绑定到实例,不希望
此.changeHandler
方法中提供的功能相同

它是:

const wrapper = shallowMountFunction();
...
expect(mockAdd).toHaveBeenCalledWith('orientationchange', wrapper.vm.changeHandler);

非常有用。非常感谢。