2012-07-20 35 views
1

我想用茉莉花測試DS.Model。我試圖測試,當我創建一個記錄它是正確安裝。emberjs餘燼數據和茉莉花測試

當我做

bb = App.BuildingBlock.createRecord(name: "Test") 

我得到的錯誤

Cannot read property 'createRecord' of undefined

,但如果我這樣做

bb = App.BuildingBlock.create(name: "Test") 

我得到

Error: You should not call create on a model. Instead, call createRecord with the attributes you would like to set.

所以它似乎知道它的一個模型?另外如果我做

expect(App.BuildingBlock).toBeDefined() 

它通過。

任何人都可以幫助我嗎?

感謝 裏克

+0

怪異,你可以發佈更多的環境? createRecord()需要一個哈希值{name:'test'} – 2012-07-20 18:38:17

回答

1

以下內容添加到您的規範頂部

store = DS.Store.create({ revision: 4 }) 

然後使用

store.createRecord(App.BuildingBlock, {name: "Test"}); 

原因你看到的錯誤是DS.Model別名createRecord商店和是什麼是未定義的。

截至model.js底部,您將看到以下行:

DS.Model.reopenClass({ 
    isLoaded: storeAlias('recordIsLoaded'), 
    find: storeAlias('find'), 
    filter: storeAlias('filter'), 

    _create: DS.Model.create, 

    create: function() { 
    throw new Ember.Error("You should not call `create` on a model. Instead, call `createRecord` with the attributes you would like to set."); 
    }, 

    createRecord: storeAlias('createRecord') 
}); 
+0

非常感謝我以爲我在我的應用程序中包含了該文件,該文件正在設置商店,但不是!這種方式對於單元測試可能更好。 – 2012-07-24 09:22:17

0

你可以嘗試創建您的問題的的jsfiddle?我沒有看到您第一次創建DS模型時遇到任何問題。您無法在DS模型上調用.create(),這樣纔有意義,並且DS模型似乎存在。這些測試是在兩個不同的設置下運行的,其中對createRecord App或BuildingBlock的調用不存在?您確定您的商店是在您的應用程序(App.store)上定義的,並且存在錯誤嗎?