Как проверить вычисляемое свойство компонента в Ember? - PullRequest
0 голосов
/ 09 октября 2018

У меня есть компонент, foo-table, которому я передаю список объектов, который называется myList.Я устанавливаю вычисляемое свойство для компонента, который сортирует список.См. Ниже:

// app/components/foo-table.js
export default Component.extend({
  sortedList: computed('myList', function foo() {
    const myList = this.getWithDefault('myList', []);
    return myList.sortBy('bar');
  }),
});

Как мне написать тест, чтобы убедиться, что вычисленное свойство отсортировано?Это то, что я до сих пор:

// tests/integration/foo-table-test.js
const MY_LIST = ['foo', 'bar', 'baz']

test('it renders company industry component', function (assert) {
  this.set('myList', MY_LIST);

  this.render(hbs`
    {{foo-table myList=myList}}
  `);

  // TODO
  assert.equal(true, false);
});

1 Ответ

0 голосов
/ 10 октября 2018

Чтобы протестировать вычисленное свойство, вам нужно написать тест unit .

Модульный тест не отображает DOM, но позволяет получить прямой доступ к модулю вtest.

// tests/unit/components/foo-table-test.js
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';

module('Unit | Component | foo-table', function(hooks) {
  setupTest(hooks);

  test('property: #sortedList', function(assert) {
    const component = this.owner.factoryFor('component:foo-table').create();

    const inputs = [
      { bar: 'beta' },
      { bar: 'gamma' },
      { bar: 'alpha' }
    ];

    component.set('myList', inputs);

    const expected = [
      { bar: 'alpha' },
      { bar: 'beta' },
      { bar: 'gamma' }
    ];

    assert.deepEqual(component.get('sortedList'), expected, 'list is sorted by bar');
  });
});

Вы можете сгенерировать модульный тест следующим образом: ember generate component-test foo-table --unit

Этот ответ актуален для Ember 3.5

...