0

我有一个简单的主干视图和一个用 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

我不太确定这里缺少什么,有什么见解吗?

谢谢你,萨卡尔

4

1 回答 1

2

我在这里看到了一些问题。

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

接下来,当您在before all钩子中初始化视图时,您不会传递选项对象参数。没有这个应该会导致您的主干视图出现错误。由于options没有被传入,因此您应该在if语句中遇到错误Cannot read property 'model' of undefined。很容易解决这个问题,作为空对象传递,{}所以你有这样的东西:view = new MyView({});.

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

于 2012-09-14T01:42:08.637 回答