2012-02-22 16 views
7

Tôi đang cố gắng viết một thông số kỹ thuật đơn giản cho bộ sưu tập Backbone Todos để khai thác mô hình Backbone Todo.Backbone jasmine sinon.stub typeError

Dưới đây là spec của tôi:

describe "TodoApp.Collections.Todos", -> 

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

    afterEach -> 
    @todoStub.restore() 

này mang lại cho tôi những lỗi sau:

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

Mô hình Todo được định nghĩa mặc dù như todo = new TodoApp.Models.Todo() doens't Hãy cho một lỗi.

Đây có phải là vấn đề về phạm vi không? Ai đó có thể chỉ cho tôi đi đúng hướng không?

Trả lời

8

Tôi cũng đã gặp sự cố đó. Bạn nên gọi nó như thế này ...

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

thay vì điều này.

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

này giải quyết vấn đề đối với tôi

@smek: điều này cũng giải quyết được vấn đề của bạn từ http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html

+0

này cũng giải quyết được vấn đề cho tôi, cảm ơn! – smek

+0

Làm việc hoàn hảo cho tôi, cổ vũ. –

1

Cú pháp bạn đang sử dụng sinon.stub window, 'TodoApp.Models.Todo' sẽ là để gói window['TodoApp.Models.Todo'] làm hàm. http://sinonjs.org/docs/#stubs

Với sinon, bạn có nhiều khả năng sẽ gói một chức năng cụ thể trên mô hình Todo của bạn với một sơ khai: sinon.stub TodoApp.Models.Todo, 'Foo'.

Sinon có thể stub an entire object nhưng tôi nghĩ nó được thiết kế chi tiết hơn.

+0

Hi Erick, cảm ơn vì câu trả lời của bạn. Tôi đang cố gắng để mô hình todo để tôi có thể kiểm tra bộ sưu tập todos trong sự cô lập. Tôi đang làm theo các ví dụ trên http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html ở đâu là tiểu bang bạn có thể stub các mô hình constructor chức năng như thế này. – smek

+0

@smek bạn đã gắn mô hình '' 'Todo''' vào' '' window''', tương tự như sau: http://stackoverflow.com/questions/4214731/coffeescript-global-variables? –

+0

@Erick Tôi đã định nghĩa mô hình của mình với: window.TodoApp.Models.Todo lớp mở rộng Backbone.Model – smek