1

我正在尝试使用茉莉花测试 DS.Model。我正在尝试测试当我创建记录时它是否正确设置。

当我做

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

我得到了错误

无法读取未定义的属性“createRecord”

但如果我这样做

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

我明白了

错误:您不应该调用create模型。相反,请createRecord使用您要设置的属性进行调用。

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

expect(App.BuildingBlock).toBeDefined()

它通过了。

有人帮我解决这个问题吗?

谢谢瑞克

4

2 回答 2

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')
});
于 2012-07-23T11:49:25.197 回答
0

您可以尝试为您的问题创建一个 JsFiddle 吗?我认为您第一次调用创建 DS 模型没有任何问题。您不能在 DS 模型上调用 .create() ,这样才有意义,并且您的 DS 模型似乎存在。这些测试是否使用不存在调用 createRecord App 或 BuildingBlock 的两种不同设置运行?您确定您的商店是在您的应用程序(App.store)上定义的并且那里有问题吗?

于 2012-07-20T18:13:20.947 回答