2013-04-22 18 views
9

我們的應用程序在FixtureAdapter中使用了ember-data。我們正在使用Jasmine和js-test-driver測試模型代碼(各種JS計算)。它的每個塊在beforeEach塊中創建自己的一組記錄。重置ember-data FixtureAdapter存儲/模型在測試中

能正常工作與Ember-1.0.0-RC.1和灰燼數據在2013年3月5日(REV 7575f5a)當地建造。我目前正在嘗試升級到1.0.0-rc.3和最新的餘燼數據,但我正在使用獨特的ID打出路障。我越來越運行的所有測試時出現以下錯誤:

Error: assertion failed: The id 1001 has already been used with another record of type .Foo. in http://localhost:56390/js/lib/ember-1.0.0-rc.3.js (line 52) 

它看起來像燼數據的更新版本上斷言唯一的ID。不幸的是,我們的測試需要在每個測試的beforeEach塊中重新創建記錄的硬編碼ID。因此,每個測試都創建了一個ID爲1001的Foo。

是否有一種簡單的方法可以使商店使用FixtureAdapter重置所有它的數據(並因此忘記了Foo 1001)?我試着重置燈具:

App.Foo.FIXTURES = [] 

然而,燼數據似乎仍然在某處跟蹤舊記錄。我也試過App.reset(),但似乎沒有重置商店。

我們也做

App.Store = DS.Store.extend({ 
    revision: 12, 
    adapter: 'DS.FixtureAdapter' 
}); 

與假設,這將創建一個新的商店中清除所有數據的beforeEach塊,但這並不能工作。

+0

是這個回答?你可以選擇一個答案或自己回答嗎?我想從「未回答」中刪除此問題 – 2014-05-02 04:52:01

回答

0

我最初遇到了完全一樣的問題,試圖生成單個測試之前的記錄。考慮fixtures in the Rails sense是有幫助的,它們代表一組記錄,在所有測試運行之前,這些記錄將構建一次。

即相對的測試,這是模式之前建立個人記錄的工廠風格的你似乎以下。

它更是一個比工作的解決方案圍繞的,但我建議你把你所有的燈具到一個或多個文件,然後加載這些所有的測試之前。然後,您將從單獨的測試中引用相同的記錄,而不用重新構建它們。

最大的告誡夾具的方法是不存在任何「rolback」每次測試後提供。因此,如果您依賴測試中的原始值,則需要對變異記錄保持警惕。

+0

突變是問題,也是我們希望在每次測試之前重新創建它們的原因。感謝有關Rails類型燈具的信息。 – 2013-10-05 16:28:16

0

確保您運行的每個測試運行之間Ember.reset()(通過將它放在你的茉莉花beforeAll塊)