Unit testing 使用Mocha测试主干视图

Unit testing 使用Mocha测试主干视图,unit-testing,testing,backbone.js,mocha.js,Unit Testing,Testing,Backbone.js,Mocha.js,我有一个简单的主干视图和一个用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

我有一个简单的主干视图和一个用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
我不太确定这里缺少什么,有什么见解吗

谢谢,,
萨卡尔

我发现这里有几件事不对

首先,正如@aronwoost所提到的,您正在异步运行before钩子。如果这是您想要做的,您需要调用
done()在钩子的末尾,否则会出现超时错误。如果要同步运行钩子,请不要将
done
参数传递到函数中

接下来,当您在
before all
hook中初始化视图时,您没有传递options对象参数。没有此选项将导致主干视图中出现错误。由于未传入
options
,因此
if
语句中应该会出现错误,该语句的行为
无法读取未定义的
的属性“model”。很容易解决这个问题,将其作为空对象传递
{}
,这样您就有了如下内容:
view=newmyview({})


不确定如何产生上面列出的确切错误。是否提供了解决此问题的所有代码?

不确定,但请尝试调用done()或删除done参数。