我正在尝试使用jasmine测试DS.Model。我正在尝试测试,当我创建一个记录时,它已正确设置。
当我做的时候
bb = App.BuildingBlock.createRecord(name: "Test")
我收到错误
无法读取未定义
的属性'createRecord'
但如果我这样做
bb = App.BuildingBlock.create(name: "Test")
我得到了
错误:您不应该在模型上调用
create
。而是使用您想要设置的属性调用createRecord
。
所以它似乎知道它的模型???如果我这样做
expect(App.BuildingBlock).toBeDefined()
它过去了。
有人帮我这个吗?
感谢 瑞克
答案 0 :(得分: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')
});
答案 1 :(得分:0)
你能尝试创建问题的JsFiddle吗?我第一次打电话来创建DS模型时没有任何问题。你不能在DS模型上调用.create(),这样才有意义,你的DS模型似乎存在。这些测试是使用两个不同的设置运行的,其中对createRecord App或BuildingBlock的调用不存在?你确定你的应用程序(App.store)上定义了你的商店,那里有什么问题吗?