backbone.js - Setting URL in Backbone.Router for QUnit testing -
i have backbone.router based myrouter, calls set() methods based on url:
var myrouter = backbone.router.extend({ routes: { "dosomething/:value": "dosetteronmodel", }, dosetteronmodel: function(value) { // set(value) calls on model }, });
i test if model gets updated (set()) correctly using qunit test:
test( "update model via url change", function() { var value = "newvalue"; var url = "http://localhost/#/dosomething/" + value; //does not work moves page away qunit's tests.html page window.location = url; // not work because moves away qunit's tests.html page myrouter.navigate(url); deepequal( mymodel.get(key), value, "value on model not updated url change"); });
how can set url in qunit in order test if router performs right action url?
when want test routers bypass document navigation altogether , phone call backbone.history.loadurl
, responsible matching url fragments router methods:
backbone.history.loadurl("#/dosomething");
the additional benefit here don't need phone call backbone.history.start
in test code. note utilize or relative url. specifying http://localhost
part not necessary.
tiny demo here.
backbone.js qunit backbone-routing
No comments:
Post a Comment