测试时如何从组件获取属性?

时间:2016-03-27 15:25:20

标签: ember.js ember-testing

如果组件没有模板,如何检查组件的属性值?在应用程序中,组件被扩展,模板以这种方式提供。

//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');
});

我无法使用this.render(hbs'{{#my-component foo=foo2}}{{foo}}{{/my-component}}');,因为没有屈服于foo。也无法直接访问组件。

2 个答案:

答案 0 :(得分: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');
});

答案 1 :(得分:0)

在集成测试中,将组件视为一个盒子。为其分配值并从该组件检索通知/事件。例如,将值绑定到组件并使用它(按下按钮/输入值等)然后检查值。

同样在集成测试中,您可以使用jquery检查组件的渲染。如:

  assert.equal(this.$("td").length, 6);

在您的情况下,可能是适合您的单元测试。 Ember Unit Testing