यहाँ परीक्षण है कि pushState अपेक्षा के अनुरूप काम करता है, चमेली के साथ इसे करने का एक कम levelish रास्ता है और वह है अपने राउटर को चीजें ठीक से ... सेट: 0 परीक्षण रीढ़ की हड्डी के बारे में एक बहुत अच्छा ट्यूटोरियल है मुझे लगता है कि router
शुरू किया गया है और घर मार्ग मैप किया गया है। आप इसे अपने अन्य मार्गों के लिए अनुकूलित कर सकते हैं। मैं यह भी मान लें कि आपको अपने ऐप प्रारंभ में किए गए इस कार्य Backbone.history.start({ pushState: true });
describe('app.Router', function() {
var router = app.router, pushStateSpy;
it('has a "home" route', function() {
expect(router.routes['']).toEqual('home');
});
it('triggers the "home" route', function() {
var home = spyOn(router, 'home').andCallThrough();
pushStateSpy = spyOn(window.history, 'pushState').andCallFake(function (data, title, url) {
expect(url).toEqual('/');
router.home();
});
router.navigate('');
expect(pushStateSpy).toHaveBeenCalled();
expect(home).toHaveBeenCalled();
...
});
});
आप को प्रभावी ढंग से Backbone.history.stop();
यह इस कारण के लिए मतलब है ऐसा करके इसी तरह की बातों को प्राप्त कर सकते हैं।
अद्यतन: ब्राउज़र्स कोई pushState
साथ:
निश्चित रूप से
यह ठीक कार्य करेगा जब आप पर परीक्षण आपके ब्राउज़र pushState
के लिए समर्थन हासिल है। आप ब्राउज़रों कि नहीं है के खिलाफ परीक्षण, तो आप सशर्त इस प्रकार का परीक्षण कर सकते हैं:
it('triggers the "home" route', function() {
var home = spyOn(router, 'home').andCallThrough();
if (Backbone.history._hasPushState) {
pushStateSpy = spyOn(window.history, 'pushState').andCallFake(function (data, title, url) {
expect(url).toEqual('/');
router.home();
});
router.navigate('', {trigger: true});
expect(pushStateSpy).toHaveBeenCalled();
expect(home).toHaveBeenCalled();
} else if (Backbone.history._wantsHashChange) {
var updateHashSpy = spyOn(Backbone.history, '_updateHash').andCallFake(function (loc, frag) {
expect(frag).toEqual('');
router.home();
});
router.navigate('', {trigger: true});
expect(updateHashSpy).toHaveBeenCalled();
expect(home).toHaveBeenCalled();
}
});
आप IE6 पर हैं, अच्छी किस्मत।
बाउंटी चालू है! इस – Industrial