backbone.js - tutorial - backbone js ventajas y desventajas
La recolección de la columna vertebral no se completa con las especificaciones de Jasmine+Sinon (1)
Teoría: debe esperar que el "servidor" responda a la solicitud antes de verificar el resultado. Burlarse de la respuesta no es suficiente: la fetch
todavía es asíncrona.
Pruebe con waits
o waits
más complicadas pero elegantes waitsFor
Como se describe en https://github.com/pivotal/jasmine/wiki/Asynchronous-specs.
Cuando ejecuto esta salida de especificación, obtengo "Esperado de 0 en 2". 2 es la longitud correcta de los objetos modelo en mi accesorio para que el servidor falso de Sinon responda adecuadamente con la respuesta burlada. No puedo entender por qué mi colección tiene cero objetos después de buscar a continuación. ¡Cualquier ayuda sería realmente apreciada!
FYI: esto viene de seguir el tutorial Backbone Sinon + Jasmine aquí: http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html
Especulación:
describe "Todos collection", ->
describe "when fetching models from the server", ->
beforeEach ->
@todo = sinon.stub(window, "Todo")
@todos = new Todos()
@fixture = @fixtures.Todos.valid
@server = sinon.fakeServer.create()
@server.respondWith "GET", "/todos", @validResponse(@fixture)
afterEach ->
@todo.restore()
@server.restore()
it "should parse todos from the response", ->
@todos.fetch()
@server.respond()
expect(@todos.length).toEqual @fixture.response.todos.length
Modelo:
class window.Todos extends Backbone.Collection
model: window.Todo
url: "/todos"
comparator: (todo) ->
todo.get(''priority'')
parse: (res) ->
res.response.todos
EDITAR:
Buck Doyle a continuación me ha ayudado a ver que no hay problema con las especificaciones. Tengo algún tipo de problema con mi configuración de Jasmine Headless Webkit, y si las especificaciones se ejecutan con Jasmine independiente, pasan.