如何测试茉莉花中调度了CustomEvent?当我尝试运行以下代码时,出现错误:“ ReferenceError:找不到变量:CustomEvent”。

function testCustomEvent() {
  window.dispatchEvent(new CustomEvent('myCustomEvent', {
    detail: 'foo'
  }));
}

describe('testCustomEvent', function() {
  it('dispatches myCustomEvent', function() {
    var eventSpy = jasmine.createSpy();
    window.addEventListener('myCustomEvent', eventSpy);

    testCustomEvent();

    expect(eventSpy).toHaveBeenCalledWith('foo');
  });
});

最佳答案

无法满足期望,因为使用{ detail: 'foo'}调用了eventSpy

同样,传递的参数是一个新的事件对象,其中包含发送到Event构造函数的参数值。因此,它绝不是同一对象。如果您使用的是Jasmine 2.0,则必须使用partial matcher来强制执行深度局部相等

expect(eventSpy).toHaveBeenCalledWith(jasmine.objectContaining({
    detail: 'foo'
  }));


或者,如果您使用的版本低于2.0,则使用headache

09-25 18:34