【问题标题】:ember-qunit: You can only unload a record which is not inFlightember-qunit:您只能卸载非 inFlight 的记录
【发布时间】:2015-03-06 19:11:19
【问题描述】:

我有一些访问商店的单元测试。只要我将它们包装在运行回调中,我会认为这会很好。不幸的是,事实并非如此。我收到此错误:

afterEach 在#foo 上失败:断言失败:您只能卸载不在飞行中的记录。

据我了解,这正是 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');
  });
});

【问题讨论】:

  • 您使用的似乎是旧版本的 Ember Data。
  • 为什么这么说?
  • 您使用哪个 ember-data 版本?我在 beta15 下的集成测试中遇到了同样的问题
  • 是的,我在 beta15 上。据我回忆,这是因为我已将模型设置为立即保留任何属性更改,而不是等到save 被调用,类似于this。不过,我忘记了我是如何解决这个问题的。

标签: ember.js qunit ember-qunit


【解决方案1】:

在 Ember Data v1.13.8 与 Ember v1.13.7 结合使用时,这似乎不再是问题。

对于以下设置:

models/first-model.js

import DS from 'ember-data';

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

models/second-model.js

import DS from 'ember-data';

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

tests/unit/models/first-model-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');
  });
});

测试通过。 Demo project repository on GitHub.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多