我可以在茉莉花单元测试中伪造存储事件吗?

Gro*_*ile 3 javascript

我将需要处理一些存储事件.

window.addEventListener('storage', listener);
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用jasmine对我的代码进行单元测试.

简单地在测试中localStorage使用某些东西是setItem(key, value)行不通的,因为根据设计,不会为事件的发起者引发事件.

使用$(window).trigger('storage'...似乎是一个好主意,但我不认为这是正确的.

我看过帖子询问如何模拟本地存储,spyOn但我找不到任何处理事件.

Gro*_*ile 12

这样就可以了:

window.dispatchEvent(new StorageEvent('storage', {
    key: 'test_key', 
    newValue: 'test_value' 
});
Run Code Online (Sandbox Code Playgroud)

对于IE中的奖励积分:

var se = document.createEvent('StorageEvent');
se.initStorageEvent('storage', false, false, 'test_key', null, 'test_value', '/', null);
window.dispatchEvent(se);
Run Code Online (Sandbox Code Playgroud)