Как получить свойство от компонента при тестировании?

Как я могу проверить значение свойства компонента, если у компонента нет шаблона? В приложении компонент расширяется, и таким образом предоставляется шаблон.

//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 не получено. Прямой доступ к компоненту также невозможен.


person Keo    schedule 27.03.2016    source источник


Ответы (2)


И решение состоит в том, чтобы вместо этого использовать модульный тест.

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');
});
person Keo    schedule 27.03.2016

В интеграционном тесте думайте о компоненте как о коробке. Присвойте ему значения и получите уведомления/события от этого компонента. Например, привяжите значение к компоненту и используйте его (нажмите кнопку/введите значение и т. д.), а затем проверьте значение.

Также в интеграционном тесте вы можете проверить рендеринг компонента с помощью jquery. Такие как:

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

В вашем случае, возможно, вам подойдет модульный тест. Тестирование модулей Ember

person ykaragol    schedule 28.03.2016
comment
Да, мне нужен модульный тест для этого. В моем случае мне нужно было протестировать компонент abstract, поэтому интеграционные тесты не подходят. - person Keo; 28.03.2016