我正在尝试编写一个Backbone Todos集合的简单规范,该集合存储了Backbone Todo模型。
这是我的规格:
describe "TodoApp.Collections.Todos", ->
beforeEach ->
@todoStub = sinon.stub window, 'TodoApp.Models.Todo'
afterEach ->
@todoStub.restore()
这给了我以下错误:
TypeError: Attempted to wrap undefined property TodoApp.Models.Todo as function
Todo模型定义为todo = new TodoApp.Models.Todo()不会给出错误。
这是一个范围问题吗?有人能指出我正确的方向吗?
答案 0 :(得分:8)
我也遇到了这个问题。你应该这样称呼它......
beforeEach ->
@todoStub = sinon.stub window.TodoApp.Models, 'Todo'
而不是这个。
beforeEach ->
@todoStub = sinon.stub window, 'TodoApp.Models.Todo'
这解决了我的问题
@smek:这也解决了http://tinnedfruit.com/2011/03/25/testing-backbone-apps-with-jasmine-sinon-2.html
中的问题答案 1 :(得分:1)
您正在使用sinon.stub window, 'TodoApp.Models.Todo'
的语法用于将window['TodoApp.Models.Todo']
包装为函数。 http://sinonjs.org/docs/#stubs
对于sinon,你更有可能在你的Todo模型上使用存根包裹特定函数:sinon.stub TodoApp.Models.Todo, 'Foo'
。
Sinon可以stub an entire object,但我认为它的设计更精细。