Следите за маршрутизацией Backbone.js с Жасмин
Возникают проблемы с отслеживанием вызовов методов на магистральном маршрутизаторе, чтобы гарантировать, что он вызывает правильный метод на заданном маршруте.
выдержка из теста
describe 'Router', ->
beforeEach ->
@router = new App.Router()
Backbone.history.start()
afterEach ->
Backbone.history.stop()
describe 'routes', ->
it 'should be defined', ->
expect(@router.routes).toBeDefined()
describe 'default route', ->
it 'should be defined', ->
expect(@router.routes['']).toBeDefined()
it 'should call index', ->
spy = spyOn(@router, "index")
@router.navigate('', true)
expect(spy).toHaveBeenCalled()
Роутер
class App.Router extends Backbone.Router
routes:
'' : 'index'
index: ->
console.log "router.index has been called"
Все проходит, кроме последнего теста «должен вызывать индекс». Сбой с сообщением «Ожидаемый индекс шпиона был назван». Я пробовал другие варианты
it "should call index", ->
spyOn(@router, "index")
@router.navigate('', true)
expect(@router.index).toHaveBeenCalled()
Я также вижу, что & quot; router.index был назван & quot; вывод журнала в тестовом выводе из исходной функции Router.index
Спасибо!
РЕДАКТИРОВАТЬ: Одно решение
describe '#1 Solution', ->
it 'should call index', ->
spyOn(App.Router.prototype, "index")
@router = new App.Router()
Backbone.history.start()
@router.navigate('', true)
expect(App.Router.prototype.index).toHaveBeenCalled()