7

Backbone Todo モデルをスタブ化する Backbone Todos コレクションの簡単な仕様を書こうとしています。

これが私の仕様です:

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'ラップするためのものです。http://sinonjs.org/docs/#stubswindow['TodoApp.Models.Todo']

sinon を使用すると、Todo モデルの特定の関数をスタブでラップする可能性が高くなりますsinon.stub TodoApp.Models.Todo, 'Foo'

Sinon はオブジェクト全体をスタブ化できますが、より細かく設計されていると思います。

于 2012-02-22T16:57:58.080 に答える