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

How to get property from component when 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。直接访问组件也是不可能的。

解决方案是改用单元测试。

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

在集成测试中,将组件想象成一个盒子。为其分配值并从该组件中检索 notifications/events。例如,将一个值绑定到一个组件并使用它(推送一个 button/enter 一个值等)然后检查该值。

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

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

在您的情况下,也许单元测试适合您。 Ember Unit Testing