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でエラーが発生するはずです。これは簡単に修正できます。空のオブジェクトとして渡すと、次のようになります。ifCannot read property 'model' of undefined{}view = new MyView({});

上記の正確なエラーをどのように生成しているのかわかりません。この問題のすべてのコードを提供しましたか?

于 2012-09-14T01:42:08.637 に答える