2014-11-04 25 views
2

我正在爲我的自定義DS.RESTAdapter編寫測試,它使用我們自己的SDK作爲傳輸程序而不是ajax調用。現在,我想測試適配器find,findAll,findQuery ...函數,這些函數需要我傳遞一個存儲實例作爲參數。 例如:Ember QUnit moduleFor(測試)適配器檢索存儲

findAll: function(store, type, sinceToken){...} 

爲了能夠測試這個,我需要通過「存儲」參數是不具備的moduleFor在餘燼-qunit(不像moduleForModel在那裏你可以通過this.store內訪問商店測試實例)。

有沒有另外一種方法可以訪問當前的商店實例?

謝謝。

編輯:

我通過創建兩個,存儲和類型嘲笑解決了這個。 你可以通過創建一個存儲實例:

var store = DS.Store.create({ 
    adapter: @subject 
}) 

而對於類型模擬,就像測試所需特性的普通對象。

+0

我不知道,如果你可以直接使用'moduleFor',但只使用'module',您應該可以從應用程序實例訪問它。你可以使用'App .__ container __。lookup('store:main')'獲取ember-data存儲的實例。 – jakecraige 2014-11-04 16:16:42

+0

是的,但這需要我創建一個新的應用程序實例,這是我想避免的。 我解決了爲商店和類型創建模擬。感謝評論。 – IBQ 2014-11-04 18:53:30

+0

你的代碼在任何地方都可以上網嗎?希望實現同樣的目標,並且可以節省大量的挖掘資源。非常感激。 – getdave 2015-01-27 08:32:27

回答

0

您可以模擬此方法(例如,使用Sinon plugin for QUnit)。用於訪問存儲(但我不知道它會在你的情況下工作),它幫助我從全局命名空間訪問商店的另一個解決方案是使用setupteardown方法:

setup: function() { 
    Ember.run(App, App.advanceReadiness); 
    }, 
    teardown: function() { 
    App.reset(); 
    } 
+0

其實我最終創造了「商店」和「類型」的模擬。但感謝您的答案。 – IBQ 2014-11-04 18:52:12

相關問題