Tarayıcı gezinmesini destekleyen bir kütüphane yazıyorum history.pushState ve ayrıca gezinme tarayıcıda gerçekleştiğinde iletişim kurar popstate event yakalar. Bu kütüphane için Jasmine testleri yazmaya çalıştığım için, history.pushState
ile nasıl dalga geçebileceğimi ve window
popstate
sinyalinin emisyonunu nasıl taklit edebileceğimi merak ediyorum? Aşağıdaki kod parçacıkları sorununu aydınlatmak olmalıdır:Jasmine - history.pushState ile aynı zamanda sahte olay emisyonunu nasıl taklit edebilirim?
Kütüphane kodu:
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
};
})();
Testi kodu (Yasemin): Temel olarak
describe("Test navigate", function() {
it("Should invoke callback upon state change", function() {
var invokedWith;
function callback(url) {
invokedWith = url;
}
lib.callback = callback;
lib.navigate('/path');
// Doesn't work, callback invoked asynchronously
expect(invokedWith).toEqual('/path');
});
});
, ben history.pushState
işlevini alay ve sahte popstate
yayarlar istiyorum 'un lib
numaralı telefondaki kullanımını test etmek için window
'dan olay.
Ayrıca "çalışma" kodu için benim fiddle'a bakın.