所以我的验收测试在我的承诺完成之前不断地自我毁灭。我知道我需要将我的承诺包装在 Ember 运行循环中,但我无法让它工作。这是我的组件的外观:
export default Ember.Component.extend({
store: Ember.inject.service(),
didReceiveAttrs() {
this.handleSearchQueryChange();
},
/**
* Search based on the searchQuery
*/
handleSearchQueryChange() {
this.get('store').query('animals', {
orderBy: 'name',
startAt: this.attrs.searchQuery
}).then(searchResults => {
this.set('searchResults', searchResults);
});
}
});
我已经尝试过 wrapping this.handleSearchQueryChange()
,this.get('store').query...
并且this.set('searchResults', searchResults)
在运行循环中,但验收测试仍然不等待 store.query 完成。
需要注意的一点是,此商店查询在实时 Firebase 后端执行请求。
我目前正在使用 Pretender 来模拟数据并解决这个问题。但我也想通过 Ember.run 解决它。有人愿意提供解决方案吗?