2012-02-22 12 views
7

Estoy tratando de escribir una especificación simple para una colección de Backbone Todos que contenga el modelo Backbone Todo.Backbone jasmine sinon.stub typeError

Aquí es mi especificación:

describe "TodoApp.Collections.Todos", -> 

    beforeEach -> 
    @todoStub = sinon.stub window, 'TodoApp.Models.Todo' 

    afterEach -> 
    @todoStub.restore() 

Esto me da el siguiente error:

TypeError: Attempted to wrap undefined property TodoApp.Models.Todo as function 

Todo El modelo se define, aunque como TODO = new TodoApp.Models.Todo() doens't dar un error.

¿Es un problema de alcance? ¿Podría alguien señalarme en la dirección correcta?

Respuesta

8

Acabo de encontrarme con ese problema también. Debería llamarlo así ...

beforeEach -> 
      @todoStub = sinon.stub window.TodoApp.Models, 'Todo' 

en lugar de esto.

beforeEach -> 
      @todoStub = sinon.stub window, 'TodoApp.Models.Todo' 

esta resuelto el problema para mí

@smek: esto también resuelve su problema de http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html

+0

esto también me solucionó el problema, ¡gracias! – smek

+0

Me funcionó a la perfección, salud. –

1

La sintaxis que está usando sinon.stub window, 'TodoApp.Models.Todo' sería para envolver window['TodoApp.Models.Todo'] como una función. http://sinonjs.org/docs/#stubs

Con sinon, es más probable que esté envolviendo una función particular en su modelo Todo con un stub: sinon.stub TodoApp.Models.Todo, 'Foo'.

Sinon puede stub an entire object pero creo que está diseñado para ser más granular.

+0

Hola Erick, gracias por su respuesta. Intento colgar el modelo de tareas para que pueda probar la colección de todos de manera aislada. Estoy siguiendo el ejemplo en http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html donde dice que puede ponerle un trozo al constructor de modelos de esta manera. – smek

+0

@smek ha adjuntado su modelo '' 'Todo''' a' '' window''', similar a esto: http://stackoverflow.com/questions/4214731/coffeescript-global-variables? –

+0

@Erick He definido mi modelo con: class window.TodoApp.Models.Todo extends Backbone.Model – smek