Javascript 茉莉花spyOn应用于一种方法。等待vue测试utils异步函数。现在,这个方法不再是茉莉花间谍了。为什么?

Javascript 茉莉花spyOn应用于一种方法。等待vue测试utils异步函数。现在,这个方法不再是茉莉花间谍了。为什么?,javascript,unit-testing,vue.js,jasmine,vue-test-utils,Javascript,Unit Testing,Vue.js,Jasmine,Vue Test Utils,我想测试在Vue组件方法上触发本机事件时是否调用了该方法。我使用vue测试utils、karma和jasmine进行测试 it('should emit enter-key when enter key is pressed in the input field', async () => { spyOn(wrapper.vm, 'handleEnterKey').and.callThrough(); await wrapper.find('input').trigge

我想测试在Vue组件方法上触发本机事件时是否调用了该方法。我使用
vue测试utils
karma
jasmine
进行测试

  it('should emit enter-key when enter key is pressed in the input field', async () => {
    spyOn(wrapper.vm, 'handleEnterKey').and.callThrough();
    await wrapper.find('input').trigger('keydown.enter');
    expect(wrapper.vm.handleEnterKey).toHaveBeenCalled();
  });
我已经通过
console.log
s确认,在我调用
spyOn
之后,
wrapper.vm.handleEnterKey
方法确实是一个间谍。但是,如果在
等待
之后我
console.log
wrapper.vm.handleEnterKey,它又是原来的函数。另外,我得到了错误,
Uncaught(in promise)error::预期是间谍,但得到了函数。

我已经确认
input
元素也存在,尽管我似乎也没有真正导致调用
enter
处理程序。我不确定这两个问题是否相关。该组件如下所示:

<div>
  <input @keypress.enter.passive="handleEnterKey()">
</div>
updateQuery()
不是异步函数

我已经在谷歌上搜索了大约2个小时,还没有发现任何迹象表明为什么一个方法应该在等待之后不再是间谍。其他关于“Expected a spy…”的stackoverflow回答似乎主要围绕着那些希望
spyOn
返回某个内容的人,或者不理解方法名应该作为第二个参数传递,等等,所以看起来不相关

我尝试了年提出的两种解决方案,尽管它们看起来很有希望,但都没有产生任何不同的效果。错误仍然相同

茉莉花版的作品也没有


为什么我的方法不再是jasmine间谍,在一个承诺得到解决之后?

我的同事把我的代码拉了出来,它成功了。考试通过了。调用了函数(spy)

所以,我重新启动了我的电脑

现在,它起作用了

我希望我能多说一点为什么它以前不起作用

handleEnterKey() {
  this.updateQuery();
  this.$emit('enter-key');
},