7

鉴于 Ember1.0.0最近到达,我想开始使用它进行测试。我将 Yeoman 1.0 与 Karma 一起使用。我想对模型进行单元测试,但我发现很难实现隔离。

我现在的例子是:

describe("Expense", function() {
  return it("has a computed property called `explained`", function() {
    var expense = App.Expense.create({
      name: "My first expense",
      value: 34
    });
    return expect(expense.get("explained")).to.equal("My first expense -- 34");
  });
});

截至1.0.0,我收到以下错误:

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

我应该如何访问 store 以创建模型实例?更理想的是,我怎样才能简单地生成这样的模型而不求助于商店,这可行吗?生成一个完整的应用程序只是为了测试一个模型是没有意义的,IMO。

谢谢你。

4

3 回答 3

4

这是迄今为止我用于单元测试模型的最少代码。

var container, store, expense;

container = new Ember.Container();
container.register('store:main', DS.Store.extend());
container.register('model:expense', App.Expense);
store = container.lookup('store:main');

Ember.run( function() {
  expense = store.createRecord('expense', {
    name: "My first expense",
    value: 34
  });
});

根据商店的代码和在 Ember Data 中测试模型的方式,我认为您不能减少测试的设置。

于 2013-12-10T00:38:04.507 回答
2

App.__container__.lookup('store:main')根据@sly7_7 的评论,通过作品在应用内寻找商店。

于 2013-09-05T15:39:22.653 回答
0

你应该使用 this.get('store').createRecord('expense')

看起来您正在使用 Ember-Data 1.0.0 beta,它改变了工作方式。您应该查看 ember-data 项目中的 migration.md 文件。

(抱歉,我应该更好地阅读您的问题 - 我目前遇到同样的问题,建议的容器解决方案对我不起作用 - 导致浏览器崩溃):(

于 2013-10-11T00:56:07.547 回答