Ember.js 在Ember集成测试中注入Ember数据的正确方法是什么

Ember.js 在Ember集成测试中注入Ember数据的正确方法是什么,ember.js,ember-data,integration-testing,Ember.js,Ember Data,Integration Testing,我有一个组件,它需要一个模型属性,该属性是最初从管线模型创建的余烬数据对象 我在集成测试中尝试过这个,但是存储区没有定义 test('it renders', function (assert) { this.inject.service('store') let model = this.get('store').createRecord('post'); this.set('model', model); this.render(hbs`{{post-item-form

我有一个组件,它需要一个模型属性,该属性是最初从管线模型创建的余烬数据对象

我在集成测试中尝试过这个,但是存储区没有定义

test('it renders', function (assert) {
  this.inject.service('store')

  let model = this.get('store').createRecord('post');

  this.set('model', model);

  this.render(hbs`{{post-item-form model = model}}`);

  assert.equal(this.$().text().trim(), 'Post your thoughts');

  // Template block usage:
  this.render(hbs`
    {{#post-item-form}}
      template block text
    {{/post-item-form}}
  `);

  // assert.equal(this.$().text().trim(), 'template block text');
});

我更愿意创建一个纯json对象,而不是通过在组件集成测试中使用store来创建记录;因为组件本身对存储一无所知,您只需将纯json对象而不是模型实例传递给组件,它应该仍然可以工作。有了这种心态,我只会处理存储验收测试

如果你仍然想走你提到的路;我相信您需要按如下方式检索该商店:

var store = Ember.getOwner(this).lookup("service:store");
自;默认情况下,在测试模式下禁用自动运行循环;运行以下代码let model=store.createRecord'post'时,很可能会出现断言错误,表明没有可用的运行循环;这意味着您需要将其包装在运行循环中,如Ember.run=>model=store.createRecord'post';。我没有尝试我写的东西;但我想这应该行得通

再一次;为什么需要在集成测试中通过存储创建记录?如果你真的喜欢使用商店;那么验收测试应该更好;因为存储将启动并运行,您不需要通过查找来检索它。我希望这有帮助