Backbone jasmine sinon.stub typeError

时间:2012-02-22 11:09:21

标签: backbone.js coffeescript jasmine sprockets sinon

我正在尝试编写一个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()不会给出错误。

这是一个范围问题吗?有人能指出我正确的方向吗?

2 个答案:

答案 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,但我认为它的设计更精细。