emberjs ember-data和茉莉花测试

时间:2012-07-20 11:23:17

标签: javascript ember.js jasmine ember-data

我正在尝试使用jasmine测试DS.Model。我正在尝试测试,当我创建一个记录时,它已正确设置。

当我做的时候

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

我收到错误

  

无法读取未定义

的属性'createRecord'

但如果我这样做

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

我得到了

  

错误:您不应该在模型上调用create。而是使用您想要设置的属性调用createRecord

所以它似乎知道它的模型???如果我这样做

expect(App.BuildingBlock).toBeDefined()

它过去了。

有人帮我这个吗?

感谢 瑞克

2 个答案:

答案 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)上定义了你的商店,那里有什么问题吗?