7

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

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

4

2 回答 2

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解决了您的问题

于 2012-04-23T10:51:34.143 回答
1

您使用的语法sinon.stub window, 'TodoApp.Models.Todo'将用于包装window['TodoApp.Models.Todo']为函数。http://sinonjs.org/docs/#stubs

使用 sinon,您更有可能在 Todo 模型上使用 stub: 包装特定函数sinon.stub TodoApp.Models.Todo, 'Foo'

Sinon 可以存根整个对象,但我认为它被设计为更细粒度。

于 2012-02-22T16:57:58.080 回答