Backbone jasmine sinon.stub typeError
Posted
技术标签:
【中文标题】Backbone jasmine sinon.stub typeError【英文标题】: 【发布时间】:2012-03-12 17:05:06 【问题描述】:我正在尝试为 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() 不会给出错误。
这是一个范围问题吗?有人能指出我正确的方向吗?
【问题讨论】:
【参考方案1】:我也遇到了这个问题。你应该这样称呼它......
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的问题
【讨论】:
【参考方案2】:您使用的语法 sinon.stub window, 'TodoApp.Models.Todo'
将用于将 window['TodoApp.Models.Todo']
包装为一个函数。 http://sinonjs.org/docs/#stubs
使用 sinon,您更有可能在 Todo 模型上使用存根包装特定函数:sinon.stub TodoApp.Models.Todo, 'Foo'
。
诗乃可以stub an entire object,但我认为它的设计更精细。
【讨论】:
您好,埃里克,感谢您的回答。我正在尝试对 todo 模型进行存根,以便可以单独测试 todos 集合。我正在关注tinnedfruit.com/2011/03/25/… 上的示例,您可以像这样对模型构造函数进行存根。 @smek 您是否将您的Todo
模型附加到window
,类似于:***.com/questions/4214731/…?
@Erick 我已经定义了我的模型:class window.TodoApp.Models.Todo extends Backbone.Model
@EricBock 我有类似的要求,即使用 SinonJS 存根整个 BackBone 模型对象。您发布的链接(存根整个对象)似乎不起作用。是否还有其他相同的示例链接,我尝试了tinnedfruit.com/2011/03/25/… 教程,但收到诸如“尝试将未定义的属性 Todo 包装为函数”之类的错误以上是关于Backbone jasmine sinon.stub typeError的主要内容,如果未能解决你的问题,请参考以下文章
karma-jasmine-html-reporter@1.1.0 需要 jasmine@>=3 的对等方,但没有安装。