我可以在茉莉花单元测试中伪造存储事件吗
Can I fake a storage event in my jasmine unit tests?
我将需要处理一些存储事件。
window.addEventListener('storage', listener);
我正在尝试用jasmine对我的代码进行单元测试。
在测试中使用setItem(key, value)
简单地将一些东西放入localStorage
中是行不通的,因为在设计中不会为事件的发起者引发事件。
一开始使用$(window).trigger('storage'...
似乎是个好主意,但我认为这是不对的。
我看到一些帖子询问如何用spyOn
模拟本地存储,但我找不到任何处理事件的帖子。
这就成功了:
window.dispatchEvent(new StorageEvent('storage', {
key: 'test_key',
newValue: 'test_value'
});
对于IE中的奖励积分:
var se = document.createEvent('StorageEvent');
se.initStorageEvent('storage', false, false, 'test_key', null, 'test_value', '/', null);
window.dispatchEvent(se);
很抱歉作为答案(没有代表评论):
我建议从回答问题开始:"你想测试什么?"
- 如果您正在测试事件处理程序,请调用它并提供事件的模拟
- 如果你想确保你已经附加了处理程序-spyOn,并检查它是否已附加
据我所知,您正在编写一个单元测试,然后测试您的单元并模拟所有外部依赖关系。手动触发事件似乎更像是模拟浏览器。
如果我错了,请详细解释你的情况。
相关文章:
- 如何解雇“;铁局部存储负载”;事件
- 如何在jQuery事件处理程序中存储和重用超时
- reactJs redux:如何对用户事件调度操作并将操作与化简器和存储链接
- 如何将事件处理程序存储在变量中,并在以后将其绑定到对象
- 如何在 jQuery 中存储单击事件上的按钮的值
- 存储一个事件处理程序中的变量以供另一个事件处理器使用
- jQuery:存储自定义事件之间的数据
- 正在创建事件侦听器以从本地存储中删除对象
- 如何存储鼠标&键盘事件和值
- jquery.data 在存储元素时是否跳过事件处理程序
- store.loadData 是否会在 ExtJs 4.2.5 上的存储上触发加载事件
- 单击“在时间存储变量”按钮,以便在触发 ajaxComplete 事件时使用
- 存储事件未触发
- 如何将誓言令牌推送到本地存储或本地会话并监听存储事件?(SoundCloud Php/JS 错误解决方法)
- 如何解释浏览器之间的不同“存储”事件行为
- 本地存储事件侦听器不会在 Chrome 中针对本地文件触发
- 强制本地存储事件在同一窗口中激发
- 我可以在茉莉花单元测试中伪造存储事件吗
- 为控制器中的存储事件设置侦听器
- IE 11企业模式下未触发本地存储事件