sagen, dass ich die folgende Backbone-Router haben:Backbone + Jasmine Test AJAX Erfolg Rückruf in Router
class App.Routers.ThingsRouter extends Backbone.Router
initialize: -> new App.Collections.ThingsCollection()
index: ->
that = this
@collection.fetch success: ->
view = new App.Views.ThingsIndex(collection: that.collection)
$('#app-container').html(view.render().el)
Ich brauche einen Jasmine Spion zu schreiben, die diese beobachten und sicherstellen, dass App.Views.ThingsIndex()
genannt wird. Da es jedoch AJAX ist, wird Folgendes nicht:
describe 'index', ->
@router = new App.Routers.ThingsRouter()
spyOn(@router.collection, 'fetch')
fake = { render: -> '' }
@previewsIndexStub = spyOn(Periscope.Views, 'PreviewsIndex').andReturn(fake)
@router.index()
expect(@previewsIndexStub).toHaveBeenCalled()
Da Jasmin die Erwartungsfunktion ausgeführt wird, bevor der AJAX-Aufruf abgeschlossen werden kann. Gibt es eine gute Möglichkeit, einen Rückruf so zu testen?
Sie wissen nicht, ob das funktioniert, wie '@ previewsIndexStub' die' toHaveBeenCalled nicht haben() 'Funktion es verfügbar wie' erwarten (@previewsIndexStub) 'tut. Ich bekomme "undefined" ist keine Funktion " – clem
@clem mein Schlechter du willst die Variable' wasCalled' statt –
verwenden Ich machte diese Änderung, wie Sie es aktualisiert, danke! – clem