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';。我没有尝试我写的东西;但我想这应该行得通
再一次;为什么需要在集成测试中通过存储创建记录?如果你真的喜欢使用商店;那么验收测试应该更好;因为存储将启动并运行,您不需要通过查找来检索它。我希望这有帮助