如何测试茉莉花中调度了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