ソースを読み、さまざまなコンポーネントの単体テストを行うことで、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' と等しいと予想されます。