使用Mocha测试骨干视图

时间:2012-08-26 23:35:23

标签: unit-testing testing backbone.js mocha

我有一个简单的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

1 个答案:

答案 0 :(得分:2)

我在这里看到了一些错误。

首先,正如@ Aron-Woost所提到的,你正在以异步方式运行前钩子。如果这是您想要做的,您需要在挂钩结束时调用done();,否则您将收到超时错误。如果要同步运行钩子,请不要将done参数传递给函数。

接下来,当您在before all挂钩中初始化视图时,您没有传递选项对象参数。没有这个应该会导致骨干视图出错。由于未传递options,因此您应该在if语句的Cannot read property 'model' of undefined语句中收到错误。轻松解决此问题,将其作为空对象{}传递,以便您拥有以下内容:view = new MyView({});

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