Как преобразовать модульный тест Ember с использованием ObjectProxy в интеграционный тест?

Перед обновлением до Ember CLI 1.13.1 все компоненты генерировали модульный тест, если мой компонент полагался на свойство, я мог написать что-то вроде:

var supplier = var supplier = Ember.ObjectProxy.create({
    ...
});

// Creates the component instance
var component = this.subject();
assert.equal(component._state, 'preRender');

component.set('supplier', supplier);

// Renders the component to the page
this.render();
assert.equal(component._state, 'inDOM');

И это пройдет/рендерит все в порядке.

Сейчас я пишу интеграционный тест для этого так:

var self = this;
Ember.run(function() {
  self.set('supplier', supplier);
});
this.render(hbs`{{widgets/add-update-order-item}}`);

Проблема, с которой я столкнулся, заключается в ошибках рендеринга с Cannot read property 'forEach' of undefined, часть шаблона имеет {{each}} по сравнению с supplier.prices. Если я добавлю {{поставщик журналов}} в шаблон непосредственно перед {{каждым}}, я увижу undefined. Итак, я предполагаю, что набор не произошел до вызова рендеринга? Что мне нужно сделать, чтобы это заработало, мне не нужны обратные вызовы или ожидания в форме модульного теста, не так ли?


person Adam Knights    schedule 13.07.2015    source источник


Ответы (1)


Rwjblue на github указал мне (https://github.com/ember-cli/ember-cli/issues/4532), что вам нужно не только установить это свойство, но и включить его в рендеринг. Изменение моего теста на:

var self = this;

self.set('supplier', supplier);

this.render(hbs`{{widgets/add-update-order-item supplier=supplier}}`);

Работал.

person Adam Knights    schedule 28.07.2015