2016-03-27 23 views
1

コンポーネントにテンプレートがない場合、コンポーネントのプロパティ値を確認するにはどうすればよいですか?アプリケーションでは、コンポーネントが拡張され、そのようにテンプレートが提供されます。テスト時にコンポーネントからプロパティを取得する方法は?

//my-component.js 
export default Ember.Component.extend({ 
    foo: 'bar' 
}); 

//my-component-test.hbs 
integration: true; 
test('it renders', function(assert) { 
    this.set('foo2', 'foo2'); 
    this.render(hbs`{{my-component foo=foo2}}`); 
    assert.equal(/* ??? */, 'foo2'); 
}); 

私はfooがもたらしたされていないためthis.render(hbs'{{#my-component foo=foo2}}{{foo}}{{/my-component}}');を使用することはできませんよ。コンポーネントに直接アクセスすることもできません。

答えて

3

そして、代わりにユニットテストを使用することです。

import { moduleForComponent, test } from 'ember-qunit'; 

moduleForComponent('forms/base-form', 'Unit | Component | forms/base-form field', { 
    unit: true 
}); 

test('it renders', function(assert) { 
    const foo2 = 'foo2'; 
    const component = this.subject({foo: foo2}); 
    assert.equal(component.get('foo'), 'foo2'); 
}); 
0

統合テストでは、コンポーネントをボックスと見なします。値を割り当て、そのコンポーネントから通知/イベントを取得します。たとえば、値をコンポーネントにバインドして使用する(ボタンを押す/値を入力するなど)、値を確認します。

また、統合テストでは、コンポーネントのレンダリングをjqueryで確認できます。例:

おそらく単体テストに適しています。 Ember Unit Testing

+1

はい、私はこれのために単体テストが必要でした。私の場合、抽象コンポーネントをテストする必要があったので、なぜ統合テストが合わないのですか。 – Keo

関連する問題