所以我的驗收測試在我的承諾完成之前不斷破壞自己。我知道我需要將我的承諾包裝在Ember運行循環中,但我無法使其工作。這裏是我的組件的外觀:Ember/emberfire運行循環驗收測試
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);
});
}
});
我已經試過包裝this.handleSearchQueryChange()
,在運行循環this.get('store').query...
和this.set('searchResults', searchResults)
但儘管如此,在接受測試只是不等待store.query完成。
有一點需要注意,此商店查詢在實時Firebase後端上執行請求。
我目前正在使用僞裝模擬數據並解決此問題。但我想通過Ember.run解決它。任何人都在意提供解決方案?
謝謝,我害怕我會得到那麼長的答案。好吧。 就像我說的,我目前通過使用pretender來解決這個問題,但理想情況下我想在Firebase的運行測試數據庫上使用它,以便我也可以測試我的安全規則。當我能夠時,我會研究你的插件。謝謝! – rmmmp
是的,我寫了一個服務員,正是因爲這個原因:想測試一個活的(測試實例)firebase。只是安裝它應該是所有需要使您的測試工作(如果沒有,請讓我知道)。我還沒有看到太多的另一個選項是[firebase-server](https://github.com/urish/firebase-server) - 它[由firebase作爲端對端測試的官方解決方案推廣](https://www.firebase.com/blog/2015-04-24-end-to-end-testing-firebase-server.html) –
實際上,如果你需要測試通過firebase登錄過程。還有一個(相關的)錯誤阻止了這一點。我已經提交了[解決此問題的請求](https://github.com/firebase/emberfire/pull/330),但在此之前,您需要在登錄時進行一些手動簿記:https:// github.com/gabrielgrant/empty/commit/257776d32dc300f0c0dde8d2904274172e2067d5 –