Магистральная жасмин sinon.stub typeError - PullRequest
7 голосов
/ 22 февраля 2012

Я пытаюсь написать простую спецификацию для коллекции 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 ]

8 голосов
/ 23 апреля 2012

Я тоже столкнулся с этой проблемой.Вы должны называть это так ...

    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 голос
/ 22 февраля 2012

Синтаксис, который вы используете sinon.stub window, 'TodoApp.Models.Todo', будет использоваться для переноса window['TodoApp.Models.Todo'] в качестве функции. http://sinonjs.org/docs/#stubs

С помощью sinon вы, скорее всего, добавите конкретную функцию в модель Todo с заглушкой: sinon.stub TodoApp.Models.Todo, 'Foo'.

Синон может заглушить целый объект , но я думаю, что он разработан, чтобы быть более детальным.

...