2012-02-22 14 views
7

Sto provando a scrivere una semplice specifica per una collezione Backbone Todos che blocca il modello Backbone Todo.Backbone jasmine sinon.stub typeError

Ecco la mia spec:

describe "TodoApp.Collections.Todos", -> 

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

    afterEach -> 
    @todoStub.restore() 

Questo mi dà il seguente errore:

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

Il modello Todo è definito anche se, come todo = new TodoApp.Models.Todo() doens't give un errore.

È un problema di ambito? Qualcuno potrebbe indicarmi la giusta direzione?

risposta

8

Ho appena incontrato anche questo problema. Dovresti chiamarlo così ...

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

invece di questo.

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

questo risolto il problema per me

@smek: questo risolve anche il problema da http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html

+0

anche questo ha risolto il problema per me, grazie! – smek

+0

Ha funzionato perfettamente per me, evviva. –

1

La sintassi che si sta utilizzando sinon.stub window, 'TodoApp.Models.Todo' sarebbe per il wrapping window['TodoApp.Models.Todo'] come una funzione. http://sinonjs.org/docs/#stubs

Con sinon è più probabile che si stia avvolgendo una particolare funzione sul modello Todo con uno stub: sinon.stub TodoApp.Models.Todo, 'Foo'.

Sinon può stub an entire object ma penso che sia progettato per essere più granulare.

+0

Ciao Erick, grazie per la tua risposta. Sto provando a bloccare il modello di Todo in modo da poter testare la collezione Todos in isolamento. Sto seguendo l'esempio su http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html dove is states è possibile eseguire lo stub della funzione di costruzione dei modelli in questo modo. – smek

+0

@smek hai collegato il tuo modello '' 'Todo''' a' '' window''', in questo modo: http://stackoverflow.com/questions/4214731/coffeescript-global-variables? –

+0

@Erick Ho definito il mio modello con: class window.TodoApp.Models.Todo estende Backbone.Model – smek

Problemi correlati