1

ソースを読み、さまざまなコンポーネントの単体テストを行うことで、ember のコアについて詳しく学ぼうとしています。現在、単純なビュー/コントローラー/テンプレートの組み合わせを接続して、特定のモデルとテンプレートでレンダリングされるビュー (実際の html 出力) に対してアサートできるかどうかを確認しようとしています。

動作する私の最初のテストは次のようになります

it ("template will render given output", function(){
    var view = Ember.View.create({
        template: Ember.Handlebars.compile('bar')
    });
    Ember.run(function() {
        view.appendTo("#body");
    });
    expect(Ember.$.trim(view.$().text())).toEqual("bar");
  });

しかし、これはモデルやコントローラーで動的なことをしていません。ビューを(特定のコントローラーに)配線できないように見えるため、次の試みは現在失敗しています。

  it ("model property is output when view bound", function(){
    var speaker = CodeCamp.Speaker.createRecord({id: 1, name: 'foobar'});
    var view = Ember.View.create({
        template: Ember.Handlebars.compile('{{#each foo in controller}}{{foo.name}}{{/each}}')
    });
    var controller = Ember.ArrayController.create({                                                                                    
        content: []
    });
    get(controller, 'content').push(speaker);
    var x = get(controller, 'content');
    var len = get(get(controller, 'content'), 'length');
    expect(len).toEqual(1);
    set(controller, 'view', view);
    Ember.run(function() {
        view.appendTo("#body");
    });
    expect(Ember.$.trim(view.$().text())).toEqual("foobar");
});

しかし、現状では、アサーションは失敗します

'' は 'foobar' と等しいと予想されます。

4

1 に答える 1