Javascript 茉莉花-我怎样才能模仿history.pushState和假事件发射?
我正在编写一个库,该库在的帮助下支持浏览器导航,并捕获在浏览器中进行导航时进行通信的。当我试图为这个库编写测试时,我想知道如何模拟Javascript 茉莉花-我怎样才能模仿history.pushState和假事件发射?,javascript,jquery,testing,mocking,jasmine,Javascript,Jquery,Testing,Mocking,Jasmine,我正在编写一个库,该库在的帮助下支持浏览器导航,并捕获在浏览器中进行导航时进行通信的。当我试图为这个库编写测试时,我想知道如何模拟历史.pushState,以及如何模拟窗口发出的popstate信号?以下代码片段应说明问题: 库代码: var lib = (function() { function navigate(path) { history.pushState(null, null, path); } function onPopState(ev
历史.pushState
,以及如何模拟窗口发出的popstate
信号?以下代码片段应说明问题:
库代码:
var lib = (function() {
function navigate(path) {
history.pushState(null, null, path);
}
function onPopState(event) {
if (lib.callback) {
lib.callback(document.location);
}
}
$(window).bind('popstate', onPopState);
return {
navigate: navigate
};
})();
测试代码(Jasmine):
基本上,我想模拟history.pushState
函数,并从窗口发出一个假的popstate
事件,以便测试lib
中的popstate
处理
另请参见我的“工作”代码。您可以监视历史。pushState
如下:
spyOn(history, 'pushState');
使用jquery绑定事件时,您只需自己触发popstate
$(window).trigger('popstate')
$(window).trigger('popstate')