【问题标题】:Expected spy click to have been called预期的间谍点击已被调用
【发布时间】:2019-10-29 16:36:10
【问题描述】:

我正在测试 Jasmine-Teaspoon 中是否调用了元素的单击事件。但是,我收到一个错误:

“预期的间谍点击已被调用。”

  describe("onPlayerStateChange", function(){
    it("should stop video when data equals to zero", function(){
      var closeElmeent = $(".close.close-popup");
      var spy = spyOn(closeElmeent, 'click');
      player.onPlayerStateChange(event);
      expect(spy).toHaveBeenCalled();
    });
  }); 

在此处查看正在测试的完整代码:

ReferenceError: Can't find variable: onPlayerReady (When using callback)

【问题讨论】:

  • 尝试将$(".close.close-popup") 放入变量中并重用它。相同选择器的重复 jQuery 调用不会返回相同的对象。
  • @Taplar 实际上适用于我发布的初始代码,但我刚刚更新,因为我的代码实际上有点不同。希望您知道解决方案。

标签: javascript jquery jasmine teaspoon


【解决方案1】:

参考链接问题的上下文:

onPlayerStateChange(event) {
 if(event.data === 0) {           
   $('.close.close-popup').click();
 }
}

event.data 是否设置为 0?因为undefined不等于0:false === (undefined === 0)

describe('onPlayerStateChange', () => {
    it('should stop video when data equals to zero', () => {
        event.data = 0;
        const closeElmeent = $(".close.close-popup");
        const spy = spyOn(closeElmeent, 'click'); // if you want it to actually click, you can use "spyOn(closeElmeent, 'click').and.callThrough();"
        onplayerStateChange(event);
        expect(spy).toHaveBeenCalled();
    });
});

【讨论】:

  • 是的,事件设置为0,我最终使用依赖注入来解决它。
猜你喜欢
  • 2017-11-18
  • 1970-01-01
  • 2019-02-05
  • 1970-01-01
  • 2023-04-06
  • 2019-02-24
  • 1970-01-01
  • 2021-02-04
  • 1970-01-01
相关资源
最近更新 更多