我有一个简单的Backbone View和一个用Mocha编写的简单单元测试。
查看代码:
var MyView = Backbone.View.extend({
el: '#myDiv',
initialize: function(options) {
if(options.model)
this.model = options.model;
}
});
我的测试代码:
var view;
describe('myView Test', function(){
before(function(done){
view = new MyView();
});
});
当我尝试创建新视图时,我会收到;
Application View "before all" hook:
TypeError: Expecting a function in instanceof check, but got #myDiv
at backbone.js line 1203
我不确定这里缺少什么,有什么见解吗?
谢谢你, sakal
答案 0 :(得分:2)
我在这里看到了一些错误。
首先,正如@ Aron-Woost所提到的,你正在以异步方式运行前钩子。如果这是您想要做的,您需要在挂钩结束时调用done();
,否则您将收到超时错误。如果要同步运行钩子,请不要将done
参数传递给函数。
接下来,当您在before all
挂钩中初始化视图时,您没有传递选项对象参数。没有这个应该会导致骨干视图出错。由于未传递options
,因此您应该在if
语句的Cannot read property 'model' of undefined
语句中收到错误。轻松解决此问题,将其作为空对象{}
传递,以便您拥有以下内容:view = new MyView({});
。
不确定您是如何产生上面列出的确切错误的。您是否提供了此问题的所有代码?