ember-qunit: Вы можете выгрузить только запись, которая не находится в режиме Flight.

У меня есть несколько модульных тестов, которые обращаются к хранилищу. Я бы подумал, что это будет хорошо, пока я обернул их обратным вызовом запуска. К сожалению, это не так. Я получаю эту ошибку:

afterEach потерпел неудачу на #foo: Ошибка утверждения: вы можете выгрузить только запись, которая не находится в состоянии inFlight.

Насколько я понимаю, это именно то, что должен предотвращать run. Мой тест выглядит примерно так:

test('#foo', function(assert) {
  var store = this.store();
  var model = this.subject();

  Ember.run(function() {
    var secondModel = store.createRecord('secondModel', { foo: 'bar' });
    model.set('secondModel', secondModel);
    var foo = model.get('secondModelFoo');

    assert.equal(foo, 'bar');
  });
});

person nullnullnull    schedule 06.03.2015    source источник
comment
Похоже, вы используете устаревшие версии Ember Data.   -  person    schedule 06.03.2015
comment
Почему ты это сказал?   -  person nullnullnull    schedule 06.03.2015
comment
какую версию ember-data вы используете? У меня такая же проблема во время интеграционных тестов в beta15.   -  person chrmod    schedule 24.04.2015
comment
Да, я был на бета15. Насколько я помню, это было потому, что я настроил свои модели для немедленного сохранения любых изменений свойств, а не ждал, пока не будет вызван save, подобно это. Я забыл, как я решил проблему, хотя.   -  person nullnullnull    schedule 25.04.2015


Ответы (1)


Похоже, это больше не проблема в Ember Data v1.13.8 в сочетании с Ember v1.13.7.

Для следующей настройки:

модели/first-model.js

import DS from 'ember-data';

export default DS.Model.extend({
  secondModel: DS.belongsTo('second-model')
});

модели /вторая-model.js

import DS from 'ember-data';

export default DS.Model.extend({
  foo: DS.attr('string')
});

тесты/модуль/модели/первая модель-test.js

import Ember from 'ember';
import { moduleForModel, test } from 'ember-qunit';

moduleForModel('first-model', 'Unit | Model | first model', {
  // Specify the other units that are required for this test.
  needs: ['model:second-model']
});

test('it exists', function(assert) {
  var model = this.subject();
  // var store = this.store();
  assert.ok(!!model);
});

test('#foo', function(assert) {
  var store = this.store();
  var model = this.subject();

  Ember.run(function() {
    assert.expect(1);

    var secondModel = store.createRecord('second-model', { foo: 'bar' });
    model.set('secondModel', secondModel);
    var foo = model.get('secondModel.foo');

    assert.equal(foo, 'bar');
  });
});

Испытания проходят. Репозиторий демонстрационных проектов на GitHub.

person Daniel Kmak    schedule 27.09.2015