首页 文章

在ember-cli中测试扩展的核心余烬对象

提问于
浏览
3

我创建了一个ember-cli应用程序,我需要从ember-data扩展默认存储 . 为此,我在app / store.js创建了一个文件,并简单地扩展了商店:

export default DS.Store.extend({
  findOrCreateRecord: function(type, properties, preload) {
    ...
  }
});

这很好用,但是当我来测试使用这种新方法的初始化器时,我收到以下错误:

'undefined' is not a function (evaluating 'store.findOrCreateRecord()') 我有什么需要做的测试才能在这里玩得很好吗?我正在测试的文件是下面的初始化程序:

export function initialize(container, app) {
  var store = container.lookup('store:main');
  app.deferReadiness();

  store.findOrCreateRecord('order', basketToken).then(function(basket) {
    container.register('basket:main', basket, { instantiate: false });
    app.inject('controller:basket', 'model', 'basket:main');
    app.advanceReadiness();
  });
}

至于测试文件本身,它是ember-cli生成的默认值,完全没有修改

1 回答

  • 0

    由于在ember 1.12中引入了ember实例初始化程序,我的问题中的初始化程序将不再继续使用ember开发,因为不推荐在容器上调用 lookup . 同样根据@tomdale,我使用deferReadiness / advanceReadiness是一种在初始化器中提供同步性的一种hacky方式,并且不鼓励使用 . 建议使用应用程序路由来实现此功能 .

    这很好地解释了on GitHub

    此外,在更新版本的ember-data中,商店已被转移到服务中 . 因此,我的自定义商店必须移动到我的ember-cli项目的 services 文件夹中 . 因此,使用与ember-cli捆绑在一起的测试套件进行测试现在变得微不足道

相关问题