我目前正在为我的backbone.js应用程序编写单元测试,我在使用QUnit测试骨干路径时遇到了一些问题。
不幸的是,我在尝试运行测试时遇到以下错误。当我创建一个Backbone路由器实例时,它似乎在QUnit模块设置上:
Cannot call method 'start' of undefined
这是我的测试模块设置代码(在文档就绪时调用):
var router;
module("Test Router", {
setup: function () {
router = new TestRouter();
},
teardown: function () {
router = null;
}
});
这是我路由器的代码:
var TestRouter = Backbone.Router.extend({
initialize: function () {
Backbone.history.start();
},
routes: {
"!/test-view": "testView",
"!/test-view-two": "testViewTwo",
"*actions": "testView"
},
testView: function () {
//view code here
},
testViewTwo: function () {
//view code here
}
});
有没有人对我做错了什么有任何想法?代码在QUnit测试之外按预期工作。
答案 0 :(得分:1)
当您调用Backbone.history.start()
并且它不是设计用于路由器的构造函数内时,会跟踪Url Hash修改更改。请将您的代码更改为以下内容并尝试
var router;
module("Test Router", {
setup: function () {
router = new TestRouter();
Backbone.history.start();
},
teardown: function () {
router = null;
}
});
var TestRouter = Backbone.Router.extend({
initialize: function () {
},
routes: {
"!/test-view": "testView",
"!/test-view-two": "testViewTwo",
"*actions": "testView"
},
testView: function () {
//view code here
},
testViewTwo: function () {
//view code here
}
});