Невозможно вызвать метод 'start' из-за неопределенной ошибки, используя Backbone.history.start () и QUnit - PullRequest
2 голосов
/ 23 февраля 2012

В настоящее время я пишу модульные тесты для своего приложения backbone.js, и у меня возникли некоторые проблемы при тестировании магистральных маршрутов с помощью QUnit.

К сожалению, я получаю следующую ошибку при попыткезапустить тестКажется, это происходит при настройке модуля 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.

1 Ответ

1 голос
/ 30 апреля 2012

Изменения изменений Url Hash отслеживаются при вызове Backbone.history.start(), и он не предназначен для использования внутри конструктора маршрутизатора.Пожалуйста, измените ваш код ниже и попробуйте

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
}
});
...